使用ostream_iterator创建文件但不写入的简单文件写入
Simple file writing with ostream_iterator creates file, but doesn't write
我有一个非常简单的代码来创建一个名为"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;
}
不敢相信我错过了这个...
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- ostream:在 cout 或文件上输出的类
- 如何访问标准::ostream 文件
- 尝试使用 ostream 保存文件内容时出错
- 将带有C++的二进制文件从 istream 复制到 ostream 并不总是正确的
- 在Ostream上使用std :: endl使我的文件二进制
- COUT不使用Ostream标头文件
- 超载Ostream运算符从文件打印矩阵
- 错误:无法在实现文件中绑定“std::ostream”
- 输出到stdout和带有cout、cerr、clog甚至用户定义的ostream的文件
- 对象文件中的ostream操作符发生了什么?
- 如何用打开的文件将ostream内容写入ofstream
- ostream打开文件失败,因为打开的文件太多
- 如何在c++和linux中将std::ostream重定向到文件或/dev/null
- 创建ostream到文件或cout的正确方法