我使用printf()
语句创建了以下输出:
printf("She said time flies like an arrow, but fruit flies like a banana.");
但我想把实际的报价放在双引号中,所以输出是
她说:“时光如箭,果如香蕉”。
不干扰用于在printf()
语句中包装字符串文字的双引号。
我怎样才能做到这一点?
我使用printf()
语句创建了以下输出:
printf("She said time flies like an arrow, but fruit flies like a banana.");
但我想把实际的报价放在双引号中,所以输出是
她说:“时光如箭,果如香蕉”。
不干扰用于在printf()
语句中包装字符串文字的双引号。
我怎样才能做到这一点?
用反斜杠转义引号:
printf("She said \"time flies like an arrow, but fruit flies like a banana\".");
您可以在字符串文字中使用特殊的转义字符,这些字符用前导反斜杠表示。
值得庆幸的是,对于 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 等较长格式的字符串时,它无疑要清晰得多。