C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 如何将istringstream和ifstream分配给istream变量?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想要一个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;

大佬总结

以上是大佬教程为你收集整理的c – 如何将istringstream和ifstream分配给istream变量?全部内容,希望文章能够帮你解决c – 如何将istringstream和ifstream分配给istream变量?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: