C++ Can';t创建流对象的std::向量

C++ Can';t创建流对象的std::向量,c++,c++11,c++14,C++,C++11,C++14,我试图创建一个流的向量,但它不起作用 std::vector<std::ofstream> files(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; ++

我试图创建一个流的向量,但它不起作用

std::vector<std::ofstream> files(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);
}
#包括
#包括
自动创建文件(int n)
{
std::vector files(n);//在运行时此处失败

对于(int i=0;i允许程序编译,但在运行时失败?还是无法编译?编译,但在运行时失败?您能否提供一个具有竞争力的可编译程序来复制此内容?就像大约5行代码一样?您有
std::vector文件(10)
std::vector文件;
两者。哪一个是您真正使用的代码?第一个创建一个
vector
,其中包含10个与任何文件都不相关的
流,因此,如果您尝试写入这些文件,将导致运行时失败。您可以发布一段最小的代码(仅几行)吗但是导致系统错误的完整程序?不要发布与您遇到问题的代码大致相同的代码。确保您发布的代码经过编译器并导致错误。
#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);
}
#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);
}