C++中的转义字符(字符串中反斜杠\的特殊性)
转义字符的作用今天在处理字符串的时候,遇见了平时在字符串中并不常见的字符---反斜杠\ 。与反斜杠搭配的一些特殊字符称为转义字符,转义字符可以表示特殊的意义,或者表示不容易表示的字符。比如说我们想定义一个带有双引号的字符串 s="abc";s="abc" 这样s输出是没有双引号的。s=" "abc" " 这样连编译都不通过出现这个问题的原因是双引号原本就是表示字符串的边界的,所以处理起来格外棘手。
转义字符的作用
今天在处理字符串的时候,遇见了平时在字符串中并不常见的字符---反斜杠\ 。
与反斜杠搭配的一些特殊字符称为转义字符,转义字符可以表示特殊的意义,或者表示不容易表示的字符。
比如说我们想定义一个带有双引号的字符串 s="abc";
- s="abc" 这样s输出是没有双引号的。
- s=" "abc" " 这样连编译都不通过
出现这个问题的原因是双引号原本就是表示字符串的边界的,所以处理起来格外棘手。
有了转义字符,直接在双引号前加上\, \" 就是一个表示双引号的转义字符,问题一下子就解决了。
- s=" \" abc\" ";
固定的转义字符搭配
反斜杠和字母数字的搭配是固定的,他们合起来搭配成转义字符。
- 比如 \a 的作用就是响铃。\a 也只能看做是一个字符。
未定义的转义字符是无意义的,在字符串中,会忽略字符反斜杠。
- 比如 \m 是没有定义的,我们自己编的,那么字符串会默认忽略掉反斜杠。
编译器还可能对于这种未定义的转义字符发出警告。
以下是所有转义字符:
转义字符 | 意义 | ASCII码值(十进制) |
\a | 响铃(BEL) | 007 |
\b | 退格(BS) ,将当前位置移到前一列 | 008 |
\f | 换页(FF),将当前位置移到下页开头 | 012 |
\n | 换行(LF) ,将当前位置移到下一行开头 | 010 |
\r | 回车(CR) ,将当前位置移到本行开头 | 013 |
\t | 水平制表(HT) (跳到下一个TAB位置) | 009 |
\v | 垂直制表(VT) | 011 |
\\ | 代表一个反斜线字符''\' | 092 |
\' | 代表一个单引号(撇号)字符 | 039 |
\" | 代表一个双引号字符 | 034 |
\? | 代表一个问号 | 063 |
\0 | 空字符(NULL) | 000 |
\ddd | 1到3位八进制数所代表的任意字符 | 三位八进制 |
\xhh | 1到2位十六进制所代表的任意字符 | 二位十六进制 |
字符串中反斜杠\的特殊性
char a[10]="\0\0";
\0是转义字符,表示空格,又因为在字符串中,空格是字符串结束的标志,所以字符串a的长度是0。
char a[10]="\\0\0";
第一个反斜杠后面还是反斜杠,\\ 是转义字符,表示一个反斜杠。 然后是字符0,再就是结束符 \0。 所以a表示的是字符串 \0
总结: 有反斜杠的字符串计算其长度的话,要从左到右,依次辨识出其中的转义字符。
更多推荐
所有评论(0)