我正在使用visual studio 2013.我想将一个对象矢量输出到几个文件中。如果我只是将所有内容打印到单个文件,我可以创建输出文件,但如果我尝试输出到多个文件,则没有任何反应。
#include<vector>
#include<fstream>
#include<iostream>
#include<string>
using namespace std;
struct object
{
int a, b;
};
int main()
{
vector<object> DATA;
//fill DATA
ofstream out; string outname;
outname = "TL" + ".txt";
out.open(outname.c_str());
for (int i = 0; i < p; i++)
{
for (int k = 0; k < DATA.size(); k++)
{
out << i << endl;
if (DATA[k].a == i)
out << DATA[k].b << endl;
}
out << endl;
}
out.close();
return 0;
}
以上完全符合我的预期。但是,如果我重新排列它以便我可以制作单独的文件:
for (int i = 0; i < p; i++)
{
ofstream out; string outname;
outname = "TLR" + to_string(i) + ".txt";
out.open(outname.c_str());
for (int k = 0; k < DATA.size(); k++)
{
if (DATA[k].a == i)
out << DATA[k].b << endl;
}
out.close();
}
我没有输出。我已经检查过是否在另一个目录和nada中创建了这些文件。在每个案例之后放置“cout&lt;&lt; out.is_open()”表示单个文件实际上正在打开(输出1),而多个文件未被打开(输出0)。
有人能告诉我发生了什么,我该怎么做才能解决这个问题?我不想运行该程序,然后打开输出文件,在我完成后解析。
谢谢。
答案 0 :(得分:0)
当我制作多个文件时,我在文件名中使用了管道“|”,(未显示) - 这是Windows文件名中的禁止字符。