将数据存储在流中而不打开文件

Store data in ofstream without opening a file

本文关键字:文件 数据 存储      更新时间:2023-10-16

有没有办法将数据存储到流中,例如:

#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
}

我想基本上更改文件中的数字("myfile.txt"),但不创建新文件。这需要标准吗?

您可以

先写入内存中输出流的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();

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

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

    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;
    }