0

我想创建vector四个string对象,四个ofstream对象,string对象用于命名输出文件,ofstream对象用于写入数据。

#include <vector>
#include <fstream>

std::vector<std::string*> myFileNames; 
std::vector<std::ofstream*> myFiles;
int id[4]={1,2,3,4};

for(int i=0; i<4; i++)
{
   myFiles.push_back(new std::ofstream);
   myFileNames.push_back(new std::string);

}

int tmp[4];

for(int i=0; i<4; i++)
{

     tmp[i] = id[i] ;
    myFileNames[i] = "file";
    myFileNames[i] += tmp[i];
    myFileNames[i] += " .csv ";

    std::cout<< "Opening file:" << myFileName[i] << std::endl;
    myFiles[i].open (myFileNames[i].c_str());
    myFiles[i]<< "a,";
 }

问题是从这一行开始 -myFileNames[i] = "file";发生错误,似乎我无法myFileNames以这种方式将值提供给成员,任何人都可以帮我解决这个问题,就像我想创建四个具有四个不同名称的文件,并给它们循环中的值。

4

1 回答 1

0

myFileNames[i],根据您的声明,它不是字符串对象,而是指向字符串的指针。我不确定为什么要这样声明。
让它
std::vector<std::string> myFileNames;
std::vector<std::ofstream> myFiles;
没有指针。

您还应该删除调用 push_back 的 for 循环,因为您还不需要在其中存储任何内容。

于 2013-11-01T03:34:01.250 回答