相关疑难解决方法(0)

C++字符串文字的规则转义字符

\字符串文字中的转义字符有哪些规则?是否有所有转义字符的列表?

特别是,当我\在gedit中的字符串文字中使用并按任意三个数字跟随它时,它会以不同的方式对它们进行着色.

我试图std::string用文字创建一个构造,其中0后跟空字符(\0)后跟字符0.然而,语法突出显示警告我,这可能会创建类似于0后跟空字符(\00,aka \0)的字符,也就是说,只有两个字符.

对于这个问题的解决方案,这是最好的方法:

std::string ("0\0" "0", 3)  // String concatenation 
Run Code Online (Sandbox Code Playgroud)

并且是否存在一些关于转义字符在字符串文字中的作用的参考?例如,'\ a'是什么?

c++ string escaping

40
推荐指数
1
解决办法
10万
查看次数

strlen - 字符串的长度有时会增加1

我正在做一些C拼图问题.在大多数情况下,我能够找到正确的答案,但有了这个问题,我就遇到了问题.我通过使用编译器知道正确的答案,但我不知道原因.

看看代码:

char c[] = "abc\012\0x34";
Run Code Online (Sandbox Code Playgroud)

strlen(c)使用标准C编译器会返回什么?

当我期望的是3时,我的编译器返回4.

我的想法是strlen()搜索NULL角色的第一次出现,但不知何故结果是比我预期的更多.

知道为什么吗?

c string strlen

28
推荐指数
1
解决办法
1649
查看次数

为什么在C中没有使用反斜杠转义百分比字符?

printf()文件说,如果有人想打印%在C,他可以使用:

printf("%%")
Run Code Online (Sandbox Code Playgroud)

为什么不是:

printf("\%")
Run Code Online (Sandbox Code Playgroud)

和其他特殊字符一样?

c printf escaping special-characters

19
推荐指数
2
解决办法
1696
查看次数

判断转义十六进制在字符串中的结尾位置

printf我想用函数打印 10\xc2\xb0Celsius

\n\n

通常我会这样做:

\n\n
printf("10\\xF8Celsius");\n
Run Code Online (Sandbox Code Playgroud)\n\n

其中 \\xF8 是度数符号的 ANSI 代码。问题是编译器获取 \\x 之后的所有十六进制字符并尝试转换为字符,基本上它获取\\F8Ce并尝试将其转换为字符。

\n\n

我可以这样写:

\n\n
printf("10\\xF8 Celsius"); //see additional space\n
Run Code Online (Sandbox Code Playgroud)\n\n

但问题仍然存在。

\n\n

如何告诉编译器我的十六进制代码在哪里结束?是否可以?

\n\n

注意:我在 Windows 8.1 上使用 Visual Studio 2015 PRE 来观察这个问题(并不是说这个问题是特定于平台的,只是提一下)

\n

c c++ windows

3
推荐指数
1
解决办法
2166
查看次数

错误:十六进制转义序列超出范围

尝试与字符串进行比较: BOOL r = [res isEqualToString:[@"\x124Vx\xc3\xaa"]];

但是我得到了

错误:十六进制转义序列超出范围

我也尝试过类似的东西:

NSString *s = [@"\x12" stringByAppendingString: @"4Vx\xc3\xaa"];
BOOL r = [res isEqualToString:s];
Run Code Online (Sandbox Code Playgroud)

现在它可以工作并返回 YES

如何指定这样的字符串并避免先将它们拆分?有点烦...

更新:我使用@rmaddy 的代码,它现在可以工作,但是,如果我将它放在数组中,例如:

NSArray *answers = @[
                     @"",
                     @"#",
                     @"\x12""4Vx\xc3\xaa",
                     ] 
Run Code Online (Sandbox Code Playgroud)

它将为最后一个字符串文字生成警告:

NSArray 表达式的串联 NSString 文字 - 可能缺少逗号 如何摆脱它?

使用

NSString *s = @"\x12""4Vx\xc3\xaa";
NSArray *arr = @[s];
Run Code Online (Sandbox Code Playgroud)

可以工作,但我不想写更多的 NSString *s ... 来做到这一点。

objective-c

3
推荐指数
1
解决办法
6194
查看次数

标签 统计

c ×3

c++ ×2

escaping ×2

string ×2

objective-c ×1

printf ×1

special-characters ×1

strlen ×1

windows ×1