Я работаю с 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).
Может кто-нибудь сказать мне, что происходит и что я могу сделать, чтобы это исправить? Я не хочу запускать программу, а затем открыть выходной файл для анализа после того, как я сделал это.
Спасибо.
Когда я создавал несколько файлов, я использовал в имени файла символ «|» (не показан), который является запрещенным символом в именах файлов Windows.
Других решений пока нет …