使用ostream_iterator创建文件但不写入的简单文件写入

Simple file writing with ostream_iterator creates file, but doesn't write

本文关键字:文件 ostream 简单 创建 使用 iterator      更新时间:2023-10-16

我有一个非常简单的代码来创建一个名为"Input.txt"的文本文件,并使用ostream_iterator写入它:

using namespace std;

int main()
{
    ofstream os{ "Input.txt" }; 
    ostream_iterator<int> oo{ os,"," };
    vector<int> ints;
    for (int i = 0; i < 1000; i++)
    {
        ints.push_back(i);
    }
    unique_copy(ints.begin(), ints.end(), oo);
    system("PAUSE");
    return 0;
}

上面的代码创建了一个"输入.txt",但没有写入它。我是否错过了一些真正明显和基本的东西?

在调用 system() 之前,您没有将流刷新到磁盘。

您可以显式flush()close()流:

int main() {
    ofstream os{ "Input.txt" };
    ostream_iterator<int> oo{ os,"," };
    vector<int> ints;
    for (int i = 0; i < 1000; i++) {
        ints.push_back(i);
    }
    unique_copy(ints.begin(), ints.end(), oo);
    os.close();
    system("PAUSE");
    return 0;
}

或者,您可以在流周围放置范围大括号,以便它更快地超出范围。

int main() {
    {
    ofstream os{ "Input.txt" };
    ostream_iterator<int> oo{ os,"," };
    vector<int> ints;
    for (int i = 0; i < 1000; i++) {
        ints.push_back(i);
    }
    unique_copy(ints.begin(), ints.end(), oo);
    }
    system("PAUSE");
    return 0;
}

我想通了,这是因为我在代码中有"System("PAUSE"(",阻止了输出流进入文件。这是工作代码:

int main()
{
    ofstream os{ "Input.txt" }; // output stream for file "to"
    ostream_iterator<int> oo{ os,"," };
    vector<int> ints;
    for (int i = 0; i < 1000; i++)
    {
        ints.push_back(i);
    }
    unique_copy(ints.begin(), ints.end(), oo);
    return 0;
}

不敢相信我错过了这个...