在不打开文件的情况下将数据存储在流中

时间:2016-03-09 11:35:13

标签: c++

有没有办法将数据存储到以下内容中:

#include <fstream>

int main() {
    std::ofstream output;
    std::ifstream input("myfile.txt");

    int a;

    for (int i=0;i<100;i++) {
        input >> a;
        output << a+1;
    }

    input.close();

    output.open("myfile.txt");
    // Save everything to the file and close it

}

我想基本上更改文件中的数字(&#34; myfile.txt&#34;),但不创建新文件。是否需要stdio?

2 个答案:

答案 0 :(得分:4)

您可以先写入ostringstream,这是一个内存输出流。然后将内容写入另一个流,例如:

std::ostringstream in_memory_stream;

// fill in_memory_stream
// ...

// copy in_memory_stream into myfile.txt
std::ofstream file("myfile.txt");
file << in_memory_stream.rdbuf();

或者,写入具有临时名称的文件。文件完成后,将其刷新并将其重命名为最终名称。

答案 1 :(得分:0)

您可以将数据保存在内存中,然后覆盖旧文件

    ifstream input("myfile.txt");

    int a;
    vector<int> vin;

    for (int i=0;i<100;i++) {
        input >> a;
        vin.push_back(a+1);
    }

    input.close();
    ofstream out("myfile.txt");
    for(int i=0;i<vin.size();++i)
    {
      out<<vin[i]<<endl;
    }