如何忽略c ++文件中的空格

时间:2015-02-01 19:09:52

标签: c++ file io whitespace istream

我是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, ' ');
}

感谢您的帮助。如果在其他地方得到回答,请道歉。我能找到的只是不涉及文件的例子。

1 个答案:

答案 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
    }

}