使用std :: vector <std :: string *>和std :: vector <std :: ofstream *> </std :: ofstream *> </std :: string *>

时间:2013-11-01 03:28:17

标签: c++ vector

我想创建vectorstring个对象和4个ofstream个对象,string个对象用于命名输出文件和{{1对象用于写入数据。

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";成员,任何人都可以帮助我,就像我一样想要创建四个具有四个不同名称的文件,并在循环中为它们赋值。

1 个答案:

答案 0 :(得分:0)

根据你的声明,

myFileNames[i]不是字符串对象,而是指向字符串的指针。我不确定为什么这样宣布。
设为std::vector<std::string> myFileNames;
std::vector<std::ofstream> myFiles;
没有指针。

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