这些行是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();
}
答案 0 :(得分: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();