내 친구가 독서 캐릭터가 예기치 않은 동작을 일으키는 상황을 보여주었습니다. 문자 '¤'를 읽으면 그의 프로그램이 충돌하게됩니다. 나는 '¤'이 십진수 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에서 유니 코드 문자를 처리 할 때 무한 루프가 발생합니다. – Masse
'while (input)'을 변경하지 않았다면 어쨌든 무한 루프가 발생합니다. –
예고했습니다. 그러나 while (input) 동안조차도 나는 문자를 괜찮습니다. 소프트웨어에 EOF를 주려고했을 때만 무한 루프가 발생했습니다. wchar을 사용하면 모든 nonascii 문자에 무한 루프가 발생합니다. – Masse