синтаксический анализ — 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();
}

Я не получаю выходной. Я уже проверил, создаются ли файлы в другом каталоге и нада. Размещение «кут» << out.is_open () «после каждого из случаев показывает, что один файл действительно открывается (вывод 1), а несколько файлов не открываются (вывод 0).

Может кто-нибудь сказать мне, что происходит и что я могу сделать, чтобы это исправить? Я не хочу запускать программу, а затем открыть выходной файл для анализа после того, как я сделал это.

Спасибо.

-4

Решение

Когда я создавал несколько файлов, я использовал в имени файла символ «|» (не показан), который является запрещенным символом в именах файлов Windows.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]