4

这些行是 main() 的唯一内容:

fstream file = fstream("test.txt", ios_base::in | ios_base::out);
string word;
while (file >> word) { cout << word + " "; }
file.seekp(ios::beg);
file << "testing";
file.close();

该程序正确输出了文件的内容(即“愤怒的狗”),但是当我之后打开文件时,它仍然只是说“愤怒的狗”,而不是像我期望的那样“测试狗”。

完整程序:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
    fstream file = fstream("test.txt", ios_base::in | ios_base::out);
    string word;
    while (file >> word) { cout << word + " "; }
    file.seekp(ios::beg);
    file << "testing";
    file.close();
}
4

1 回答 1

8

您的代码中有两个错误。

首先,iostream没有复制构造函数,所以(严格来说)你不能初始化file你做的方式。

其次,一旦你跑完文件的末尾,eofbit就设置了,你需要清除该标志,然后才能再次使用流。

fstream file("test.txt", ios_base::in | ios_base::out);
string word;
while (file >> word) { cout << word + " "; }
file.clear();
file.seekp(ios::beg);
file << "testing";
file.close();
于 2012-08-11T15:52:36.217 回答