有没有办法在文件末尾添加一行,即使文件末尾有空白行?这是一个示例代码:
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语句而不是简单的语句。如果不能这样做你还有其他建议吗?
答案 0 :(得分:1)
转到文件结尾之前。然后使用一个循环来查看下一个字符(在没有前进的情况下读取它)。如果它是换行符,它会返回一个字符并重复循环。当你到达最后一个非换行符时,向前搜索2个字节,跳过该字符和换行符。
inputfile.seekg(-1, ios::end);
while(inputfile.peek() == '\n') {
inputfile.seekg(-1, ios::cur);
}
inputfile.seekg(2, ios::cur);