例如,我需要一个char数组,其中包含NUL '\0'
字符,后跟char'1'。将char数组初始化为:
char *str = "foo\01bar";
导致以下等效十六进制表示:
<hex values of foo> 0x1 <hex values of bar>`
而我要求:
<hex values of foo> 0x0 <hex value of char '1'> <hex values of bar>
如何定义这样的char数组(以char *str = <mycustomarray>;
方式);
我知道,有一个修改后的附加例程也可以附加NUL字符就可以了,但我对此并不感兴趣。
答案 0 :(得分:5)
来自C ++标准:
八进制转义序列:
\ octal-digit
\ octal-digit八进制数字
\ octal-digit octal-digit octal-digit
您可以使用:
char *str = "foo\0001bar";
或
char *str = "foo\0" "1bar";
答案 1 :(得分:0)
根据cppreference和Wikipedia,允许的序列包括\nnn
(八进制)和\xnn
(十六进制)。要防止1
被视为转义序列的一部分,您必须用零填充所有数字,例如\0001
或\x001
。