加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何将istringstream和ifstream分配给istream变量?

发布时间:2020-12-16 10:03:38 所属栏目:百科 来源:网络整理
导读:我想要一个istream类型的变量,它可以保存文件的内容或字符串.我们的想法是,如果没有指定文件,那么istream类型的变量将被赋予一个字符串. std::ifstream file(this-_path) 和 std::istringstream iss(stringSomething); 至 std::istream is 我试过将它们分配
我想要一个istream类型的变量,它可以保存文件的内容或字符串.我们的想法是,如果没有指定文件,那么istream类型的变量将被赋予一个字符串.

std::ifstream file(this->_path)

std::istringstream iss(stringSomething);

std::istream is

我试过将它们分配给istream变量,就像我从其他从同一基类继承的对象那样,但是没有用.

如何将istringstream和ifstream分配给istream变量?

解决方法

基类指针可以指向派生类数据. std :: istringstream和std :: ifstream都是从std :: istream派生的,所以我们可以这样做:

//Note that std::unique_ptr is better that raw pointers
std::unique_ptr<std::istream> stream;

//stream holds a file stream
stream = std::make_unique<std::ifstream>(std::ifstream{ this->_path });

//stream holds a string
stream = std::make_unique<std::istringstream>(std::istringstream{});

现在你只需要使用提取内容

std::string s;
(*stream) >> s;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读