【发布时间】:2021-02-27 16:54:43
【问题描述】:
我正在通过cplusplus.com tutorial on constants 了解 C++ 中的原始字符串。根据该站点上的定义,原始字符串应以R"sequence( 开头并以)sequence 结尾,其中sequence 可以是任何字符序列。
该网站的一个例子如下:
R"&%$(string with \backslash)&%$"
但是,当我尝试编译包含上述原始字符串的代码时,出现编译错误。
test.cpp:5:28: error: invalid character '$' in raw string delimiter
5 | std::string str = R"&%$(string with \backslash)&%$";
| ^
test.cpp:5:23: error: stray 'R' in program
我在 Windows 和 Linux 上都使用 g++ 和 clang++ 进行了尝试。他们都没有工作。
【问题讨论】:
-
引用cppreference:“由任何源字符组成的字符序列,但括号、反斜杠和空格”(强调我的)。但是basic source character set 不包含
$字符,这就是原因。 -
@drescherjm 也许是因为
$没有用于任何语言功能?在我看来,基本集合需要能够表示关键字、数字、运算符和其他内置 C++ 语言功能。另一方面,$、@等。只是“为了好玩”。 ;) -
“网站示例之一”cplusplus.com 再次来袭。最好假装这个网站不存在。
-
我误解了不能使用
$的地方。我现在明白了。 -
@NicolBolas - 如果 Google 没有几乎总是在结果中将 cplusplus.com 放在 cppreference.com 之上...