繁体   English   中英

为什么我不能在没有字符串流的情况下运行我的 getline 代码? 如何使用 stringstream 使此代码工作?

[英]Why can't I run my getline code without the stringstream? How do i use stringstream to make this code work?

#include<iostream>
#include<string>

using namespace std;

int main() {   
    string randomwords,temp;
    getline(cin,randomwords);
    while(getline(randomwords,temp,' ')) {  
        cout<<temp<<endl;
    }
    return 0;
}

std::getline的第一个参数是std::basic_istream std::basic_stringstd::basic_istream之间没有转换,因此您不能将std::stringstd::basic_string的特化)作为第一个参数传递给std::getline 这是 C++ 的基本规则,函数的参数必须具有匹配的类型或具有可用于将一种类型的对象转换为另一种类型的几种转换之一。 这里没有,所以这就是它不起作用的原因。

然而, std::basic_istringstream有一个重载的构造函数,它接受一个std::basic_string作为参数。 通常可以将其用作隐式转换,但此特定构造函数是explicit构造函数,禁止将其用于隐式类型转换。 因此,您只需自己完成工作:显式地从字符串构造输入流, std::getline将愉快地使用它。 任务完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM