没有匹配函数来调用“getline”

时间:2015-08-10 22:11:23

标签: c++

我是c ++编程的新手。在一个教程中,作者提到“cin”会在读取字符串中的空格时中断。如果您希望程序读入带有空格的整行字符串,则应使用“getline”函数。

然而,我无法使其发挥作用。

以下是我的代码:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string my_name;

    cout << "Please enter your name: ";
    getline(cin, my_name, "\n");

    cout << "My name is " << my_name << " .";
}

我使用的IDE是Xcode。错误消息是“没有匹配函数来调用'getline'”。

我搜索过类似的问题,但在我看来,没有一个解决方案适用于我的问题。也许我错过了一些知识?谢谢。

3 个答案:

答案 0 :(得分:5)

完整错误会告诉您为什么第三个参数类型错误。

它应该是字符类型,而不是以空字符结尾的字符串。

getline(cin, my_name, '\n');

编辑 :并且,'\n' 具体是另一种getline形式的假定分隔符:

getline(cin, my_name);

答案 1 :(得分:2)

你老师说的不对。 wget -o output.txt --no-check-certificate --user-agent="Mozilla/5.0 (Windows NT 5.2; rv:2.0.1) Gecko/20100101 Firefox/4.0.1" "http://example.com/page" 不会&#34;打破&#34;。只是将cin格式化提取设计为逐字阅读。这是故意的。它没有坏掉。

至于您的错误,您对std::string的调用被破坏,因为定界符参数的类型错误。 std::getline'\n'字面值; char是一个"\n"数组文字,根本不是你想要的。

答案 2 :(得分:0)

为我添加这条线

#include <fstream>