我有一个非常简单的代码来创建一个名为" 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;,但没有写入任何内容。我错过了一些非常明显和基本的东西吗?
答案 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;
}
无法相信我错过了这个......