矢量ofstream *无法打开任何元素

时间:2016-08-25 20:56:16

标签: c++ vector ofstream

在我的项目中,我正在尝试为输出创建一组文件。但是,每当我尝试接近这个时,我都无法打开任何一个流。我最好的方法是使用下面显示的ofstream指针向量,但我无法打开它们中的任何一个。

        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() });
            }
        }

p通常为5. is_open()显示没有任何内容打开(duh)。我的程序编译并运行没有输出。 perror说“无效论证”。我在视觉工作室2013上运行Windows 10.我该怎么做才能使这个工作?感谢。

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

所以我认为你不想创建一个ofstream对象的向量。你想要做的是为文件名创建一个字符串向量,并使用一个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

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