我有一系列字符,我正在为解码功能提供信息:
例如:
"\x05three"
(是的,那是一个Pascal风格的字符串。该函数将长度为前缀的字符串转换为以null结尾的字符串。)
我写了一些测试用例,其中包括:
"\x04four"
令我惊讶的是,那是“Oour”。仔细观察,事实证明Visual Studio的escape sequences规范允许这样,我的序列基本上被解释为\x04f
,在基数10中为79(因此我的结果字符串变为“Oour”, 79是'O')
我的解决方案只是拆分字符串:
"\x04" "four"
问题:是否有其他方法可以逃脱或终止转义序列?
答案 0 :(得分:5)
是的,你不能试试"\004four"
。实际上,即使"\04four"
也可能会这样做,因为f
不是八进制数。
答案 1 :(得分:0)
您只需彼此相邻地写字符串:
char a[3] = "1\02" // {'1', '\2', '\0'}
char a[4] = "1\0""2" // {'1', '\0', '2', '\0'}
sizeof("1\02") // 3
sizeof("1\0""2") // 4