Мой друг показал мне ситуацию, когда чтение символов вызывало неожиданное поведение. Чтение символа «¤» привело к падению его программы. Я смог сделать вывод, что «¤» - это 164 десятичное число, поэтому оно превышает диапазон 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;
}
masse@libre:temp/2009-11-30 $ ./a.out
¤
 -62 0xffffffc2
¤ -92 0xffffffa4