C++原始字符串Unicode字面量

3

我能否创建一个包含警报字符 \a 或 Unicode \u002f 字符的原始字符串?
如果可以,那么如何在没有 \ 转义字符的情况下进行转义?
如果不行,那么原始字符串是否仅用于可打印字符?我的理解正确吗?

这是一个简单的问题,但本网站需要更多信息,所以我想说,我已经阅读了大约30个有关C++和Python中原始字符串的网页,还有Stroustrup的C++书籍,但没有找到任何一句话说原始字符串仅用于可打印字符。

所有示例都使用 " 或通过键盘上的回车键输入真实换行符“必须将其转换为文字才能合并到原始字符串中>>>这个文字是什么?”

最后一句话意味着当不同作者给出普通字符串和原始字符串之间的区别示例时,他们说原始字符串可以具有双引号和反斜杠,而无需转义字符....

此外,原始字符串可以具有无需 \n 符号的换行符 >>>这将通过按键盘上的Enter按钮来完成。

但是其他非可打印字符(如 \a 和 Unicode 代码点)怎么办?这就是我的问题所在。

因此,我的问题是关于概念而不是特定代码或示例的。

简而言之:原始字符串能否包含警报字符或 Unicode 代码点?
我能否将 string s = u8"hello world \a" 转换为 string s = u8R"(hello world \a)",其中两个字符串都以警报声结束?

1个回答

5

在原始字符串中,您不能使用任何转义字符。以下行将按原样打印。

std::cout << R"(\t\aline1\nline2\n)"
output:
\t\aline1\nline2\n

你可以在同一行代码中退出原始字符串,然后再回到原始字符串。例如,以下行将使用转义字符连接原始字符串:

std::string s = "\t\a" u8R"(line1)" "\n" R"(line2)" "\n";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接