有关字符串和流对象的向量的问题
questions about vectors of string and ofstream objects
我定义了一个字符串对象向量和ofstream对象向量而不初始化它们,然后我初始化它们类似于给数组赋值,以下是我的代码,
std::vector<std::ofstream> myFiles;
std::vector<std::string> myFileNames;
int tmp[4];
for(int k=0; k<3; k++)
{
tmp[k] = myID[k] + '0';
myFileNames[k] = "file";
myFileNames[k] += tmp[k];
myFileNames[k] += " .csv ";
std::cout<< "Opening file:" << myFileNames[k] << std::endl;
myFiles[k].open (myFileNames[k].c_str());
myFiles[k]<< "t,x,y";<<std::endl;
}
编译时没有错误,但是,当我运行它时,它说矢量下标超出范围,我不确定是否是因为我没有使用固定数量的下标初始化矢量,谁能帮我定义一个固定数量的字符串和 ofstream 对象的向量,在我的情况下, 两者都是其中的3个,任何帮助将不胜感激,谢谢!
创建向量时为空。您需要向其添加元素。您可以通过调用push_back/emplace_back
逐个添加它们,或者调用resize
一次为其提供最终大小来做到这一点。在这种情况下,我会选择emplace_back
。
myFileNames.emplace_back("file");
myFilenames.back() += tmp[k];
myFilenames.back() += ".csv";
尝试使用 insert 而不是 [] 运算符。根据C++页面,[] 运算符检查边界,默认构造函数创建一个空向量(大小 0),这是您获得异常的地方
如果您只想从向量中的 3 个默认构造值开始,请执行以下操作:
std::vector<std::ofstream> myFiles(3);
std::vector<std::string> myFileNames(3);
否则,请使用push_back
或resize
方法。
相关文章:
- 如何在C++向量中奇数元素前面加上值-1,我在使用insert函数时遇到了问题
- 添加存储在向量中的大整数的函数出现问题
- C++ 继承向量问题(无限循环+在其他类中使用向量的问题)
- SWIG c++到python:向量问题
- 向量问题,如何删除向量中的数组?
- 向量问题,也许有点手
- ndk中的标准与cpp向量问题
- 从数据文件到多维向量问题
- C++:向量问题的向量
- 类向量 c++ 问题
- 特征向量问题
- C++std::向量问题
- 结构中的向量问题
- C++类向量问题
- 向量的向量问题
- 获取索引和元素-向量问题
- 搜索或发现向量问题内部
- C++向量问题;通过引用传递内容
- 几个c++向量问题
- 指向包含向量问题的实例类的指针<int>