如何将双引号放入字符串文字中?
Posted
技术标签:
【中文标题】如何将双引号放入字符串文字中?【英文标题】:How can I get double quotes into a string literal? 【发布时间】:2012-09-02 13:26:20 【问题描述】:我使用printf()
语句创建了以下输出:
printf("She said time flies like an arrow, but fruit flies like a banana.");
但我想把实际的引号放在双引号中,所以输出是
她说“时光如箭,果蝇如香蕉”。
不干扰用于在printf()
语句中包装字符串文字的双引号。
我该怎么做?
【问题讨论】:
哈,双关语加 1! 【参考方案1】:用反斜杠转义引号:
printf("She said \"time flies like an arrow, but fruit flies like a banana\".");
您可以在字符串文字中使用特殊的escape characters,它们用前导反斜杠表示。
【讨论】:
【参考方案2】:谢天谢地,在 C++11 中,还有更令人愉悦的使用原始字符串文字的方法。
printf("She said \"time flies like an arrow, but fruit flies like a banana\".");
变成:
printf(R"(She said "time flies like an arrow, but fruit flies like a banana".)");
关于在开始引号之后和结束引号之前添加括号,请注意它们几乎可以是最多 16 个字符的任意组合,有助于避免组合出现在字符串本身中的情况。具体来说:
基本源字符集的任何成员,除了:空格,左边 括号 (, 右括号)、反斜杠和 代表水平制表符、垂直制表符、表格的控制字符 提要和换行”(N3936 §2.14.5 [lex.string] 语法)和“最多 16 个字符”(§2.14.5/2)
它使这个短字符串更清晰多少可能值得商榷,但当用于 html 或 JSON 等较长格式的字符串时,它无疑会更清晰。
【讨论】:
好吧...my_json << R"("value":")" << string_value << R"(")";
甚至只是R"("value":"value1")"
- 我希望 JSON 处理能有更易读的东西:)
是的,进一步澄清说,在那种情况下,它并不太清楚。 (对于它的价值,您的示例 sn-p 是不正确的,这在一定程度上证明了您的观点!)以上是关于如何将双引号放入字符串文字中?的主要内容,如果未能解决你的问题,请参考以下文章