C++中的转义序列
两类字符不能直接使用:
- 一类是不可打印字符,例如退格等。因为没有可视的图符。
- 另一类是有特殊含义的字符(单引号,双引号,问号,反斜线)等。
这些情况下会用到转义序列,转移序列均以反斜线\
开始。
C++规定了如下的转义字符:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 换行符 \n 横线制表符 \t 响铃符 \a 纵向制表符 \v 退格符 \b 双引号 \" 反斜线 \\ 问号 \? 单引号 \' 回车符 \r ``` 程序中,上述转义符被当作一个字符来使用。 <!-- more --> 泛化的转义序列,形式是`\x`后跟一个或多个十六进制数字,或者`\`后边跟1个、2个、或者3个八进制数字。例如 ```cpp \7(响铃) \12(换行符) \40(空格) \0(空字符) \115(字符M) \x4d(字符M) |
注意:
如果反斜线后边跟着的八进制数字超过3个,只有前3个数字与\
构成转义序列。
例如”\1234
“表示两个字符,即八进制数123
对应的字符以及字符4
.
相反,\x
要用到后边跟着的所有数字,例如”\x1234
“表示一个16位的字符,该字符由这4个十六进制数所对应的比唯一确定。
例题:
以下程序段的输出结果是:
1 2 | char s[]="\\123456\123456\t"; printf("%d\n",strlen(s)); |
答案:12
char s[] = "\x00001\123456\t";
cout << strlen(s) << endl;
cout << s << endl;
输出:6
字符分别为:\x00001和\123和4和5和6以及\t共六个。