首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建ofstream的向量

创建ofstream的向量
EN

Stack Overflow用户
提问于 2015-03-12 16:07:27
回答 2查看 5.4K关注 0票数 12

我正在尝试创建一个流媒体的矢量..

代码语言:javascript
复制
vector<ofstream> streams;
for (int i = 0; i < numStreams; i++){
  ofstream out;
  string fileName = "text" + to_string(i) + ".txt";
  output.open(fileName.c_str());
  streams.push_back(out);
}

此代码将无法编译..特别是,我尝试将ofstream添加到向量的最后一行生成了一个错误。我忽略了什么?

EN

回答 2

Stack Overflow用户

发布于 2015-03-12 16:13:04

如果你可以使用C++11,你也可以使用std::move,如果不仅仅是在向量中存储指针(智能指针)的话。

代码语言:javascript
复制
streams.push_back(std::move(out));

或使用智能ptrs

代码语言:javascript
复制
vector<std::shared_ptr<ofstream> > streams;
for (int i = 0; i < numStreams; i++){
  std::shared_ptr<ofstream> out(new std::ofstream);
  string fileName = "text" + to_string(i) + ".txt";
  out->open(fileName.c_str());
  streams.push_back(out);
}
票数 17
EN

Stack Overflow用户

发布于 2015-03-12 21:25:31

您可以使用vector::emplace_back而不是push_back,这将直接在向量中创建流,因此不需要复制构造函数:

代码语言:javascript
复制
std::vector<std::ofstream> streams;

for (int i = 0; i < numStreams; i++)
{
    std::string fileName = "text" + std::to_string(i) + ".txt";
    streams.emplace_back(std::ofstream{ fileName });
}
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29004665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档