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

新手上路,请多包涵

我是 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’”。

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

原文由 Noah 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 956
2 个回答

你老师说的不是真的。 cin 不会“中断”。只是将格式化提取到 std::string 旨在逐字读取。那是故意的。它没有坏。

至于您的错误,您对 std::getline 的调用被中断,因为 delimiter 参数的类型错误。 '\n'char 文字; "\n" 是一个 char 数组文字,根本不是你想要的。

原文由 Lightness Races in Orbit 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

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

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

编辑:而且, '\n' 特别 是另一种形式的假定分隔符 getline

 getline(cin, my_name);

原文由 Drew Dormann 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题