普通的C ++程序没有写入文件

时间:2012-08-11 15:43:18

标签: c++

这些行是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();
}

1 个答案:

答案 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();