首页 > 解决方案 > cin.getline : 没有匹配的调用函数

问题描述

在许多答案和问题中,例如这个,建议使用cin.getlinefrom<string>和 not getline(cin, variable)

#include <iostream>
#include <string>

using namespace std;

int main() {
    string name;
    cin.getline(name);
}

但就我而言,我有构建问题:

g++ foo.cpp
foo.cpp: In function ‘int main()’:
foo.cpp:8:21: error: no matching function for call to 
   ‘std::basic_istream<char>::getline(std::string&)’
    8 |     cin.getline(name);
      |                     ^

标签: c++stringcin

解决方案


从编译器告诉的错误中,很明显没有这样的函数重载接受对(for )的类型引用。std::stringcin.getline()相反,它接受以下参数:

const int MAX = 100;

char input[MAX];
cin.getline(input, MAX);
// Or better
// cin.getline(input, sizeof input);

推荐阅读