忽略文件末尾的空格

时间:2016-05-14 10:28:21

标签: c++ file io

有没有办法在文件末尾添加一行,即使文件末尾有空白行?这是一个示例代码:

 void add(fstream &inputfile, int x, int y)
    {
        inputfile.clear();
        inputfile.seekg(0, ios::end);
        while(??)                             //while last line is blank space
            inputfile.seekg(-1, ios::end);    //go back one line
        inputfile << x << "\t" << y << endl;  //when while's finished add the new one
        inputfile.seekp(0);
    }

为了完成此输出:

Input file:
1 2
2 3

Wrong output file:
1 2
2 3


3 4

Correct output file:
1 2
2 3
3 4

是否可以这样做?什么应该放在while循环中?即使没有任何空格,代码也应该正常工作,所以我们必须使用while语句而不是简单的语句。如果不能这样做你还有其他建议吗?

1 个答案:

答案 0 :(得分:1)

转到文件结尾之前。然后使用一个循环来查看下一个字符(在没有前进的情况下读取它)。如果它是换行符,它会返回一个字符并重复循环。当你到达最后一个非换行符时,向前搜索2个字节,跳过该字符和换行符。

inputfile.seekg(-1, ios::end);
while(inputfile.peek() == '\n') {
    inputfile.seekg(-1, ios::cur);
}
inputfile.seekg(2, ios::cur);