我的一位朋友向我展示了閱讀字符產生意外行爲的情況。讀取字符'¤'導致他的程序崩潰。我可以得出結論,'¤'是164小數,因此它超過了ASCII範圍。閱讀ASCII以外的字符
我們注意到'¤'上的行爲,但任何字符> 127似乎都顯示出問題。問題是我們如何可靠地通過char來讀取這些字符char?
int main(int argc, const char *argv[])
{
char input;
do
{
cin >> input;
cout << input;
cout << " " << setbase(10) << (int)input;
cout << " 0x" << setbase(16) << (int)input;
cout << endl;
} while(input);
return 0;
}
[email protected]:temp/2009-11-30 $ ./a.out
¤
 -62 0xffffffc2
¤ -92 0xffffffa4
使用wchar_t,wcin和wcout時,處理unicode字符時出現無限循環。 – Masse 2009-11-30 06:32:23
如果你沒有改變'while(input)',你將會無限循環。 – 2009-11-30 06:42:14
是的,固定它。然而,即使在(輸入)我有字符的情況下,只有當我試圖給軟件EOF時,纔會導致無限循環。用wchar我有每個nonascii字符的無限循環。 – Masse 2009-11-30 10:57:16