我正在尝试创建一个ofstreams矢量..
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);
}
Run Code Online (Sandbox Code Playgroud)
这段代码不会编译..特别是我尝试将ofstream添加到vector的最后一行产生错误.我在俯瞰什么?
For*_*veR 12
如果你可以使用C++ 11,你可以使用std::move,如果不是只是在向量中存储指针(智能指针).
streams.push_back(std::move(out));
Run Code Online (Sandbox Code Playgroud)
或者使用智能ptrs
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);
}
Run Code Online (Sandbox Code Playgroud)
您可以使用vector::emplace_back而不是push_back,这将直接在向量中创建流,因此不需要复制构造函数:
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 });
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3677 次 |
| 最近记录: |