从每个字节C ++的文件字节读取

时间:2011-12-20 11:13:39

标签: c++ binary istream

我试图用C ++编写一个程序,它将采用2个文件并逐字节地比较它们。

我正在看以下帖子

Reading binary istream byte by byte

我不确定这部分内容。当使用get(char& c)时,它读入一个char并将其存储在c中。这是存储为,例如0x0D,还是存储实际的char值“c”(或其他)?

如果我希望使用这种方法逐字节比较两个文件,我会在两者上使用get(char& c)然后比较得到的字符,还是需要转换为字节?

(我认为开始一个新帖子会更好,因为原来的帖子很旧)

2 个答案:

答案 0 :(得分:2)

char只是整数的“特殊存储类型”(借用表达式),在内存中'A'和十进制值65之间没有区别(ASCII假定)。

换句话说,

c将包含文件中的读取字节。


回答你提出的问题;不,没有必要进行演员c1 == c2就行了。


  char c1 = 'A', c2 = 97, c3 = 0x42; 

  std::cout <<  c1  << "  " <<    c2 << "  " <<    c3 << std::endl;
  std::cout << +c1  << " "  <<   +c2 << " "  <<   +c3 << std::endl;
  

/ * 在上面写+c1会将c1投射到int,这与写(int)c1是一回事或更正确的(c ++ ish)static_cast<int> (c1) * /

输出:

A  a  B
65 97 66

答案 1 :(得分:0)

嗯,

一个char包含1个字节 对这个价值的解释确实取决于你,程序员。

如果你在cout流中打印该字节,它将通过ASCII代码解释,因此如果你的字符是0x63,那么它将在屏幕上打印'c'。

如果您只是使用该值,则可以根据需要使用它。

char c = 0x63;
c++;
// c is now: 0x64

请注意,您也可以输入小数