使用getline()时发生编译错误:“类型不匹配”

时间:2018-12-23 19:56:34

标签: c++ c++11 getline template-deduction argument-deduction

我不断收到此错误(虽然确实很长,但我认为最重要的部分是此错误):

main.cpp:9:30: note:   mismatched types 'std::__cxx11::basic_string<_CharT, _Traits, _Alloc>' and 'const char [2]'

在编译这段代码时:

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string x = getline(cin, " ");
    return 0;
}

错误中的行与我在此处提出的代码中的行不匹配,因为我不知道如何在Stack Overflow编辑器中编写代码时创建新行;我是新来的;)无论如何,错误指向声明为string x的行。

基本上,我想要此代码执行的操作是从用户那里获得一行代码,直到他/她碰到空格为止。也许我从一开始就做错了,所以我愿意提出解决此问题的建议。 (我不太懂C ++,只是我的老师需要使用这种语言才能完成任务。)谢谢,

安东尼

1 个答案:

答案 0 :(得分:1)

std::getline()的第二个参数是对std::string变量的引用,该变量接受读取的数据。该字符串不会在函数的返回值中输出。

此外,std::getline()不接受分隔符的字符串。它只需要一个字符。

尝试以下方法:

#include <iostream>
#include <string>
using namespace std;

int main() {
    string x;
    getline(cin, x, ' ');
    return 0;
}