在 C 字符串中包含双引号 (") [重复]

Posted

技术标签:

【中文标题】在 C 字符串中包含双引号 (") [重复]【英文标题】:Include double-quote (") in C-string [duplicate] 【发布时间】:2013-12-08 20:14:50 【问题描述】:

我想在 C 中定义一个包含以下字符集的变量字符串:a-zA-Z0-9'-_”

因此我会这样做:

char str[64] = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789'-_""

如您所见,问题以" 字符结尾。

问题 1:我该如何解决?

问题2:有没有比我这样定义字符串更好的方法?

PS:我真的不知道如何命名我的问题,所以如果你有更好的,请编辑它。

【问题讨论】:

转义最后一个引号:\" 用反斜杠转义它:"\""。请注意,使用 str[64] 您有足够的空间容纳所有 64 个字符,但没有足够的空间容纳空终止符。根据您计划如何使用字符串,这可能是一个问题。但是,通过这种初始化,指定长度是可选的,因此char str[] = "..."; 是有效的,并且会自动使缓冲区大到足以包含字符串 + 空终止符。 除非你省略了一些我没有注意到的字母,那是 66 个字符。 @HotLicks 我将它复制并粘贴到记事本 ++ 中,其中包含 64 个字符:其中没有 v(大写或小写)。 丘吉尔会失望的。 【参考方案1】:

使用反斜杠:"\"" 是包含" 的字符串

像这样:

char str[67] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'-_\"";

在末尾为隐含的 '\0' 添加了一个(并放入缺少的 vV) - 这也可能是:

char str[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'-_\"";

让编译器为您计算 - 然后您可以使用 sizeof(str) 获得计数;

67 是怎么加起来的?

a-z 26
A-Z 26
0-9 10
'-_" 4
'\0' 1
    ---
    67

【讨论】:

好的,谢谢。但是有没有更好的方法来定义这个字符串? 如果你想要它作为一个字符串——这就是你需要做的——如果你想要一个正则表达式(正则表达式)那么你可以根据你使用的正则表达式引擎来表达它——在C++11有std::regex 应该是char str[66] = ...,不是吗? 或者你可以省略数组长度,因为它在这样的初始化中是可选的。另外:里面没有v,所以65对于字符串+空终止符就足够了。 @HotLicks - 67 编辑显示数学【参考方案2】:

使用"\""(反斜杠“)将" 放入字符串中

【讨论】:

以上是关于在 C 字符串中包含双引号 (") [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Vba 字符串中的引号“ 怎样处理

Java 中SQL查询 查询条件本身包含单引号怎么办?

如何插入包含单引号的字符串

Python学习之单引号双引号三引号

JavaScript 字符串中的双引号

awk 拼接字符串的问题