繁体   English   中英

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

[英]using std::vector<std::string*> and std::vector<std::ofstream*>

我想创建由四个string对象和四个ofstream对象组成的vector ,这些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成员,有人可以帮我解决这个问题,例如我想创建具有四个不同名称的四个文件,并在循环中为它们提供值。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM