ofstream不一致地创建/写入输出文件C ++

时间:2016-08-25 19:25:22

标签: c++ parsing ofstream file-manipulation

我正在使用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)。

有人能告诉我发生了什么,我该怎么做才能解决这个问题?我不想运行该程序,然后打开输出文件,在我完成后解析。

谢谢。

1 个答案:

答案 0 :(得分:0)

当我制作多个文件时,我在文件名中使用了管道“|”,(未显示) - 这是Windows文件名中的禁止字符。