我试图用C ++编写一个程序,它将采用2个文件并逐字节地比较它们。
我正在看以下帖子
Reading binary istream byte by byte
我不确定这部分内容。当使用get(char& c)时,它读入一个char并将其存储在c中。这是存储为,例如0x0D,还是存储实际的char值“c”(或其他)?
如果我希望使用这种方法逐字节比较两个文件,我会在两者上使用get(char& c)然后比较得到的字符,还是需要转换为字节?
(我认为开始一个新帖子会更好,因为原来的帖子很旧)
答案 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
请注意,您也可以输入小数