Microsoft Visual C ++ 0x80 чтение в символ из файла ASCII - PullRequest
0 голосов
/ 30 июня 2011

Я пытаюсь прочитать символ, представленный шестнадцатеричным значением 0x80, из файла, а затем при записи в другой файл игнорировать этот символ. Однако, если я проверю этот символ с помощью простой команды, такой как:

if(int(c1) == 0x80)
  str += "";

Символ по-прежнему записывается в строку и в конце концов записывается в мой файл. Я провел небольшое исследование и думаю, что это может иметь какое-то отношение к знаковым / неподписанным символам и Microsoft Visual C ++ 2008 с использованием подписанного символа, в результате чего 0x80 выходит за пределы. Когда я вставляю точки останова в свою программу, когда я знаю, что переменная содержит этот символ и указатель мыши, он говорит мне, что значение символа равно 0. Теперь я уверен, что это значит, но когда я начал использовать его в качестве теста c1 == 0, это все еще заканчивает тем, что записал символ в файл. Как ни странно, он отображается как блок-символ 0x80 в Notepad ++ вместо знака евро (как он отображается во входных и выходных файлах, когда его не поймали. Есть идеи, что происходит?

1 Ответ

1 голос
/ 30 июня 2011

Как вы уже догадались, это, вероятно, увеличение знака числа. Это может сработать:

if((int(c1) & 0xff)== 0x80)
  str += "";
...