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; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |