英文:
Is it possible to configure c++ compiler to look for another string literal identifier?
问题
现在是2023年,我认为将字符串的标识符设为在文本中如此常见的东西,而且在其他像标记语言等语言中也常见,这似乎有些愚蠢。
C++ 使用 `"` 符号来表示字符串的开始和结束。
有没有办法将这个符号设为其他的东西?
例如 `\xac`,它也是一个1字节的字符。
举个例子,如果字符串的标识符不是双引号,那么使用 `system()` 函数将会更容易,双引号也会变得非常有用。
PHP 也是一样的情况。我使用 echo `'<div class="adiv"></div>'`,以便我可以在双引号内写一些内容,但有时我需要同时使用单引号和双引号。
我们真的只能使用引号和双引号作为定界符吗?我们不能使用或设置一个不会出现在其他地方的自定义字符吗?
如果可以的话,请告诉我如何做。如果这只是一个幻想,请也告诉我。
//示例:(我知道我即将使用的字符是3字节的(\xe2\x81\x91),但这只是为了演示...
#include <iostream>
int main() {
std::cout << ⁑Hello world!\n⁑;
system(⁑echo -e '"hello\nworld"' | grep 'hello' | sed s/'"hello'/'"Hello!"'/⁑);
return 0;
}
我尝试在谷歌的许多页面中进行了搜索,甚至找不到任何人提出这个问题的人。
英文:
It's 2023 and I think it's silly that an identifier for a string is something that is found so commonly in text, and as well in other languages like markup.
C++ uses the "
symbol to denote the beginning and end of a string.
Is there a way to have this symbol be something else?
For example \xac
, which is also a 1-byte character.
As an example, if the string identifier were something other than a double-quote, then using the system()
function would be a lot easier to use, where double-quotes would come in quite handy.
This goes for something like PHP as well. I use echo '<div class="adiv"></div>'
with single-quotes so that I can write something inside with double-quotes, but sometimes I need to be able to use both double and single quotes.
Are we really limited to quotes and double-quote being our delimiters? Can't we use, or set, a custom character that doesn't appear elsewhere?
If it's doable, please tell me how. If it's a pipe dream, let me know as well.
//Example: (I know the character I'm about to use is 3-bytes (\xe2\x81\x91) but just for demonstration...
#include <iostream>
int main() {
std::cout << ⁑Hello world!\n⁑;
system(⁑echo -e '"hello\nworld"' | grep 'hello' | sed s/'"hello'/'"Hello!"'/⁑);
return 0;
}
I tried searching many pages (paginations?) of Google, and I can't even find anyone who asked the question.
答案1
得分: 4
如果我正确理解您的问题,这可以通过使用原始字符串文字轻松解决,例如:
std::string myStr = R"('&Using single quotes&, "double quotes")";
这些括号中的任何内容从(&
到)";
将被视为字符串,您可以在该字符串内写任何内容,甚至是多行字符串而不需要\
。请注意,像\n
、\r
这样的符号也不会被视为'newline'或'return caret',而是按原样写入。
英文:
If I correctly understand your problem, this can be easy solved by using raw string literals, for example:
std::string myStr = R"('Using single quotes', "double quotes")";
Anything inside these brackets from "(
to )"
will be treated as string and you can write anything you want inside that string, even writing multiline string without \
. Make note that symbols like \n
, \r
also will be treated not as 'newline' or 'return caret', but as they written.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论