我是c ++的初学者,我的一项家庭作业是在文件中添加两个二进制数。这些数字由文件中的空格分隔。假设所有二进制数都是8位。所以我们从一个文件中读取它们并将8位存储到一个名为byte的变量中,该变量是每个Byte对象的成员。
前)
10111010 11110000
11111111 00000000
这是编写忽略空格的编码的正确方法吗?
int Byte::read(istream & file){
file.skipws;
file.get(byte, 8);
}
或者这是一种更好的方法吗?
int Byte::read(istream & file){
file.getline(byte, 8, ' ');
}
感谢您的帮助。如果在其他地方得到回答,请道歉。我能找到的只是不涉及文件的例子。
答案 0 :(得分:0)
默认情况下,为文本流启用了跳过空格。
std::string num1, num2;
if (file >> num1 >> num2)
{
// use them
}
显然,你不能使用std :: string:
#include <fstream>
std::istream& read8(std::istream& ifs, char(&arr)[8])
{
return ifs >> arr[0] >> arr[1] >> arr[2] >> arr[3] >> arr[4] >> arr[5] >> arr[6] >> arr[7];
}
int main()
{
std::ifstream file("input.txt");
char a[8], b[8];
while (read8(file, a) && read8(file, b))
{
// add a and b
}
}