如何将双引号放入字符串文字中?

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 是不正确的,这在一定程度上证明了您的观点!)

以上是关于如何将双引号放入字符串文字中?的主要内容,如果未能解决你的问题,请参考以下文章

关于JS替换双引号

如何将双引号字符串与字符进行比较?

Python MySQLdb 将双引号改为单引号

如何将双引号中的路径传递给sql文件

如何将双引号 ( " ) 插入 SQLite 数据库 Varchar 字段?

将双引号添加到列中的值,只要值在数据框中有引号