回覆列表
-
1 # fluhr2988
-
2 # lanfengz1
wchar_t 就是 unsigned short
用 wchar_t 方便很多,可以直接判斷正負,即最高位是否為1,當然,這只是粗略的判斷,要準確判斷,你可以查一下unicode字符集中漢字編碼範圍。
用 char 的方法類似,先判斷是否小於0,如果不小於0,則是一個標準的ASCII字元,否則和後面的一個char組成一個漢字。
1、ASCII是用8位二進位制表示的,但最高位是0,一個字元一位元組。中文是用所謂機內碼(參閱一下區位碼、國標碼、機內碼的內容)表示的,一個漢字二位元組,關鍵是最高位都是1。日文、韓文則是為其分配了不同的編碼段。2、計算機用兩個位元組來表示一個漢字,“我”在記憶體裡就是這樣存放的:CE D2。CE是str[0]的內容,D2是str[1]的內容。第一次迴圈輸出str[0],但是這個字元在ASCII字符集裡代表這樣一個東西Î,但是Windows的命令提示符程式讀取到這裡就會自動使用寬字符集,也就是說,它已經準備好讀取下一個字元,然後把他們當成一個字元顯示出來。於是就出現了那個漢字。