复制
收藏
提问
简洁
Main.cc: In function ‘int main()’: Main.cc:14:18: error: no matching function for call to ‘std::basic_istream<char>::getline(char [105])’ cin.getline(s);len ^ In file included from /usr/include/c++/5/sstream:38:0, from /usr/include/c++/5/complex:45, from /usr/include/c++/5/ccomplex:38, from /usr/include/x86_64-linux-gnu/c++/5/bits/stdc++.h:52, from Main.cc:1: /usr/include/c++/5/istream:647:5: note: candidate: std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::getline(std::basic_istream<_CharT, _Traits>::char_type*, std::streamsize, std::basic_istream<_CharT, _Traits>::char_type) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::char_type = char; std::streamsize = long int] basic_istream<char>:: ^ /usr/include/c++/5/istream:647:5: note: candidate expects 3 arguments, 1 provided /usr/include/c++/5/istream:427:7: note: candidate: std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::getline(std::basic_istream<_CharT, _Traits>::char_type*, std::streamsize) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_istream<_CharT, _Traits>::__istream_type = std::basic_istream<char>; std::basic_istream<_CharT, _Traits>::char_type = char; std::streamsize = long int] getline(char_type* __s, streamsize __n) ^ /usr/include/c++/5/istream:427:7: note: candidate expects 2 arguments, 1 provided Main.cc:14:20: error: ‘len’ was not declared in this scope cin.getline(s);len ^ Main.cc:15:17: error: ‘i’ was not declared in this scope for(int i=0;i<strlen(s);i++){ ^ Main.cc:18:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(int i=0;i<strlen(s);i++){ ^
6天前
全网
文档
学术
百科
知识库
回答简洁模式
深入研究一些
"no matching function for call to"错误通常是由于函数调用时参数不匹配导致的。在你的代码中,cin.getline(s);
调用缺少必要的参数。
错误原因
- 参数不匹配:
cin.getline
函数需要两个参数,但你只提供了一个。
解决方法
- 添加参数:确保
cin.getline
调用时提供两个参数,即字符数组和数组大小。
示例代码
char s[105];
cin.getline(s, 105); // 添加数组大小参数
其他错误
- 未声明变量:
len
和i
在使用前未声明。 - 修正代码:
char s[105];
cin.getline(s, 105);
int len = strlen(s); // 声明并初始化len
for(int i=0; i<len; i++) { // 声明并使用i
// 你的代码逻辑
}
通过这些修改,你的代码应该能够正确编译和运行。
你觉得结果怎么样?