Я пытаюсь создать вектор ofstream, но он не работает.
std::vector<std::ofstream> files(10);
Программа перестает работать после этой строки.
auto createFiles(int n)
{
std::vector<std::ofstream> files;
for(int i=0; i<n; ++i)
{
std::string fileName("Card" + std::to_string(i+1) + ".txt");
files.emplace_back(fileName);
if(!files[i]) throw std::runtime_error("Could not open file " + fileName);
}
return files;
}
Я пробовалтаким образом, но это тоже не работает.(программа перестает работать после первого выполнения files.emplace_back(fileName);
)
Редактировать: версия 1, не работает:
#include <fstream>
#include <vector>
auto createFiles(int n)
{
std::vector<std::ofstream> files;
for(int i=0; i<n; ++i)
{
std::string fileName("Card" + std::to_string(i+1) + ".txt");
files.emplace_back(fileName); // fails here at runtime
}
return files;
}
int main()
{
auto files = createFiles(10);
}
И версия 2, тоже не работает:
#include <fstream>
#include <vector>
auto createFiles(int n)
{
std::vector<std::ofstream> files(n); // fails here at runtime
for(int i=0; i<n; ++i)
{
std::string fileName("Card" + std::to_string(i+1) + ".txt");
files[i].open(fileName);
}
return files;
}
int main()
{
auto files = createFiles(10);
}
Редактировать 2: Решено, проблема появляется только с GCC 8.2.0