首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用多个ifstream作为ifstream的向量

使用多个ifstream作为ifstream的向量
EN

Stack Overflow用户
提问于 2019-11-07 21:20:19
回答 1查看 53关注 0票数 0

我试图逐行读取多个文件(在本例中为3个),并使用ifstream shared_ptrs的向量来执行此操作。但是我不知道如何取消引用这个指针来使用getline(),或者我的代码中有一些其他错误。

代码语言:javascript
复制
vector<shared_ptr<ifstream>> files;

for (char i = '1'; i < '4'; i++) {
        ifstream file(i + ".txt");
        files.emplace_back(make_shared<ifstream>(file));
    }

for (char i = '1'; i < '4'; i++) {
        shared_ptr<ifstream> f = files.at(i - '0' - 1); 
        string line;
        getline(??????, line); //What should I do here?

        // do stuff to line

    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-07 21:58:10

取消引用shared_ptr非常类似于取消引用原始指针:

代码语言:javascript
复制
#include <vector>
#include <fstream>
#include <memory>

int main()
{
    std::vector<std::shared_ptr<std::ifstream>> files;

    for (char i = '1'; i < '4'; i++) {
            std::string file = std::string(1, i) + ".txt";
            files.emplace_back(std::make_shared<std::ifstream>(file));
        }

    for (char i = '1'; i < '4'; i++) {
        std::shared_ptr<std::ifstream> f = files.at(i - '0' - 1); 
        std::string line;
        getline(*f, line); //What should I do here? This.

        // do stuff to line

    }
}

我已经更正了代码,以便它可以编译,但没有解决样式问题,因为它们与问题无关。

注意:如果你能发布一个完整的最小程序而不是一小段代码,对社区来说会更容易。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58749629

复制
相关文章

相似问题

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