【发布时间】:2011-06-29 21:55:43
【问题描述】:
我正在尝试从文件中读取由十六进制值 0x80 表示的字符,然后在写入另一个文件时忽略该字符。但是,如果我用一个简单的命令检查这个字符,例如:
if(int(c1) == 0x80)
str += "";
字符最终仍会写入字符串并最终写入我的文件。我做了一些研究,我认为这可能与有符号/无符号字符和 Microsoft Visual C++ 2008 使用有符号字符有关,将 0x80 置于边界之外。当我知道一个变量包含这个字符并且鼠标悬停在我的程序中插入断点时,它告诉我该字符的值为 0。我现在确定这意味着什么,但是当我开始将它用作测试时 c1 == 0 它仍然最终将字符写入文件。奇怪的是,它在 Notepad++ 中显示为块字符 0x80 而不是欧元符号(当它未被捕获时它如何显示在输入和输出文件中。知道发生了什么吗?
【问题讨论】:
标签: visual-c++ character-encoding ascii hex