使用ostream_iterator创建简单文件会创建文件,但不会写

时间:2017-04-01 02:45:18

标签: c++ file c++11

我有一个非常简单的代码来创建一个名为" 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;
}

上面的代码创建了一个&#34; Input.txt&#34;,但没有写入任何内容。我错过了一些非常明显和基本的东西吗?

2 个答案:

答案 0 :(得分:1)

在调用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;
}

答案 1 :(得分:0)

我明白了,这是因为我有&#34;系统(&#34; PAUSE&#34;)&#34;在代码中,阻止输入流进入文件。这是工作代码:

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

无法相信我错过了这个......