我正在尝试创建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中出现了问题