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

问题描述 投票:24回答:2

我有以下的输出,使用 printf() 语句,但我想把实际的引号放在双引号中,所以输出是

printf("She said time flies like an arrow, but fruit flies like a banana.");

但我想把真正的引号放在双引号里,所以输出的是

她说 "光阴似箭,果实如蕉"。

在不影响双引号的情况下,用双引号把字符串的字面意思包裹起来。printf() 声明。

如何才能做到这一点?

c++ c string escaping string-literals
2个回答
61
投票

用反斜杠将引号转义。

printf("She said \"time flies like an arrow, but fruit flies like a banana\"."); 

有一些特殊的... 逸字 你可以在字符串字元中使用,这些字元用前导反斜线表示。


19
投票

值得庆幸的是,在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.52)。

它让这个微不足道的句子变得多么清晰,也许值得商榷,但当用在HTML或JSON这样的格式化字符串上时,它无疑要清晰得多。

© www.soinside.com 2019 - 2024. All rights reserved.