我想要一个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;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。