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



我正在使用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();
  }

没有输出。我已经检查了文件是否在另一个目录中创建,没有。放置"count <<"Out.is_open()"在每种情况之后显示单个文件实际上被打开了(输出1),而多个文件没有被打开(输出0)。

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

谢谢。

当我创建多个文件时,我在文件名中使用了管道"|"(未显示),这是Windows文件名中禁止使用的字符。

相关内容

  • 没有找到相关文章

最新更新