C++ 流*的向量无法打开任何元素

C++ 流*的向量无法打开任何元素,c++,vector,ofstream,C++,Vector,Ofstream,在我的项目中,我试图创建一组用于输出的文件。然而,每当我试图接近这一点时,我都无法打开任何一个流。我最好的方法是使用如下所示的流指针向量,但我无法打开它们中的任何一个 vector<ofstream*> out; for (int m = 0; m < p; m++) { for (int n = 0; n < p; n++) { string

在我的项目中,我试图创建一组用于输出的文件。然而,每当我试图接近这一点时,我都无法打开任何一个流。我最好的方法是使用如下所示的流指针向量,但我无法打开它们中的任何一个

        vector<ofstream*> out;
        for (int m = 0; m < p; m++)
        {
            for (int n = 0; n < p; n++)
            {
                string outname = "TLR" + to_string(n) + "|" + to_string(m) + ".txt";
                out.push_back(new ofstream{ outname.c_str() });
            }
        }
矢量输出;
对于(int m=0;m

p通常为5。is_open()表示什么也没有打开(duh)。我的程序编译和运行时没有输出。perror说“无效参数”。我在visual studio 2013上运行windows 10。我能做些什么来让它工作?谢谢。

Windows上的文件名中不允许使用
|
字符。
\
/
*
也不允许使用字符。所有其他可打印的unicode字符都是有效的。

所以我不认为您不想创建流对象的向量。相反,您要做的是为文件名创建一个字符串向量,并使用一个Stream对象写入每个字符串。我想象的是这样的:

vector<string> out;
for (int m = 0; m < p; m++)
    for (int n = 0; n < p; n++)
        out.push_back("TLR" + to_string(n) + "_" + to_string(m)+ ".txt");

// Then iterate over the files writing to each one whatever you'd like with the ofstream
矢量输出;
对于(int m=0;m

此外,就像人们在上面评论的那样,“|”字符是保留的,不能在文件名中使用

为什么在outname中有管道字符“|”?@KIIV,这样我就知道了“m”和“n”是什么——它们是整数,所以我需要在windows上用一些东西来分隔它们。似乎是文件名或目录的禁止字符。请尝试在标题中加下划线,我怀疑@KIIV暗示管道字符可能不是文件名中的有效字符。毕竟,在shell命令中,它是一个管道。指针有什么特殊的原因吗?您可以按值存储
std::of stream
,并使用
out.emplace\u back(outname)