【发布时间】:2018-12-23 19:56:34
【问题描述】:
我不断收到这个错误(这是一个很长的错误,但我认为最重要的部分是这个):
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++不是很熟练,只是要求我的老师使用这种语言完成一项任务。)谢谢,
安东尼
【问题讨论】:
-
为什么要在
std::getline()的第二个参数中使用" "?你觉得它有什么作用? -
您是否阅读了参考资料:en.cppreference.com/w/cpp/string/basic_string/getline?看来你不明白要传递什么参数(或者返回值是什么)
-
@Fureeish 没关系,我刚刚找到了问题的根源。我只是记错了getline公式;我无法将 getline() 的返回值分配给变量,我必须执行 getline(cin, x, ' '),之前声明了字符串 x 才能使其工作。
-
谢谢大家这么快回信,我设法解决了这个问题。
标签: c++ c++11 getline template-argument-deduction