我想創建四個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:流是不可複製的(所以你不能把它們放在一個向量中)。 –