我想创建四个string
对象vector
,和四个ofstream
目的,string
对象用于名称输出文件和ofstream
对象用于写入数据。使用std ::矢量<的std :: string *>和std ::矢量<性病:: 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
成员以这种方式,任何人都可以帮助我,就像我想创建四个具有四个不同名称的文件,并在循环中给它们赋值。
你不需要指针的向量。改为使用'std :: vector'和'std :: vector '。要创建对象,请使用'myFiles.push_back(std :: ofstream())'和'myFileNames.push_back(“”)''。乍一看,其余部分应该保持原样。 –
zneak
您正在为引用'std :: string *'的向量元素分配一个'const char *'。你期望什么,编译器会产生你的意思*它要做什么? (并且没有理由使用'std :: string *'指针的向量来开始)。 – WhozCraig
@zneak:流是不可复制的(所以你不能把它们放在一个向量中)。 –