C++中的轉義字元(字串中反斜槓\的特殊性)
阿新 • • 發佈:2021-01-22
技術標籤:C++語言特性
轉義字元的作用
今天在處理字串的時候,遇見了平時在字串中並不常見的字元---反斜槓\ 。
與反斜槓搭配的一些特殊字元稱為轉義字元,轉義字元可以表示特殊的意義,或者表示不容易表示的字元。
比如說我們想定義一個帶有雙引號的字串 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
總結: 有反斜槓的字串計算其長度的話,要從左到右,依次辨識出其中的轉義字元。