\字符串文字中的转义字符有哪些规则?是否有所有转义字符的列表?
特别是,当我\在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拼图问题.在大多数情况下,我能够找到正确的答案,但有了这个问题,我就遇到了问题.我通过使用编译器知道正确的答案,但我不知道原因.
看看代码:
char c[] = "abc\012\0x34";
Run Code Online (Sandbox Code Playgroud)
strlen(c)使用标准C编译器会返回什么?
当我期望的是3时,我的编译器返回4.
我的想法是strlen()搜索NULL角色的第一次出现,但不知何故结果是比我预期的更多.
知道为什么吗?
该printf()文件说,如果有人想打印%在C,他可以使用:
printf("%%")
Run Code Online (Sandbox Code Playgroud)
为什么不是:
printf("\%")
Run Code Online (Sandbox Code Playgroud)
和其他特殊字符一样?
printf我想用函数打印 10\xc2\xb0Celsius
通常我会这样做:
\n\nprintf("10\\xF8Celsius");\nRun Code Online (Sandbox Code Playgroud)\n\n其中 \\xF8 是度数符号的 ANSI 代码。问题是编译器获取 \\x 之后的所有十六进制字符并尝试转换为字符,基本上它获取\\F8Ce并尝试将其转换为字符。
我可以这样写:
\n\nprintf("10\\xF8 Celsius"); //see additional space\nRun Code Online (Sandbox Code Playgroud)\n\n但问题仍然存在。
\n\n如何告诉编译器我的十六进制代码在哪里结束?是否可以?
\n\n注意:我在 Windows 8.1 上使用 Visual Studio 2015 PRE 来观察这个问题(并不是说这个问题是特定于平台的,只是提一下)
\n尝试与字符串进行比较:
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 ... 来做到这一点。