1. 程式人生 > 其它 >C++中的轉義字元(字串中反斜槓\的特殊性)

C++中的轉義字元(字串中反斜槓\的特殊性)

技術標籤: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

總結: 有反斜槓的字串計算其長度的話,要從左到右,依次辨識出其中的轉義字元。