Microsoft Visual C ++ 0x80从ASCII文件读入char

时间:2011-06-29 21:55:43

标签: visual-c++ character-encoding ascii hex

我正在尝试从文件中读取十六进制值0x80表示的字符,然后在写入另一个文件时忽略该字符。但是,如果我使用简单的命令检查此字符,例如:

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

该字符仍然最终写入字符串并最终写入我的文件。我做了一些研究,我认为它可能与签名/未签名字符和使用签名字符的Microsoft Visual C ++ 2008有关,将0x80置于界限之外。当我知道一个变量包含这个字符和mouseover时,我将断点插入到我的程序中时,它告诉我该字符的值为0.我现在确定这意味着什么,但是当我开始将它用作测试时{{1}它仍然最终将字符写入文件。奇怪的是,它在Notepad ++中显示为块字符0x80而不是欧元符号(当它未被捕获时它如何显示在输入和输出文件中。任何想法发生了什么?

1 个答案:

答案 0 :(得分:1)

正如你猜测的那样,这可能是签署数字的延续。这可能有效:

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