无法创建std :: ofstream对象的std :: vector

时间:2019-03-04 21:46:00

标签: c++ c++11 c++14

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

0 个答案:

没有答案