从每个字节的文件字节读取C++
我试图用C++编写一个程序,该程序需要2个文件并逐字节比较它们。从每个字节的文件字节读取C++
我一直在寻找在下面的帖子
Reading binary istream byte by byte
我不是真的肯定的这个部分。当使用get(char & c)时,它读入一个char并将其存储在c中。这是存储为,比如说0x0D,还是存储实际的char值“c”(或其他)?
如果我希望使用这种方法比较两个文件逐字节比较我只是用get(char & c)然后比较获得的字符,或者我需要投到字节?
(我想开始一个新的岗位会更好,因为原来是很旧的)的整数
char
s为不过是“特殊类型的存储”(原谅表达),在内存中有在'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个字节 该值的解释确实取决于你,程序员。
如果您在cout流中打印该字节,它将通过ASCII码解释,因此如果您的字符是0x63,那么它将在屏幕上打印'c'。
如果你只是使用值,只要你喜欢,你可以使用它..
char c = 0x63;
c++;
// c is now: 0x64
请注意,您也可以输入小数
啊。对。干杯 – discodowney 2011-12-20 11:19:45
“这是存储作为,说0X0D,或者是存储实际的字符值“c”(或其他)?“这是同一件事。 – 2011-12-20 11:15:54
我不明白这个问题。一个'char'的值实际上是一些字节(你可以毫无困难地将它转换为int)。一些实现(编译器+系统)具有'无符号'(例如从0到255),其他实现(例如从-128到127 IIRC)。 – 2011-12-20 11:16:10
如果您需要二进制数据使用无符号字符,请不要使用char。 – AlexTheo 2011-12-20 11:25:47