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