[Error] no matching function for call to 'std::basic_istream<char>::getline(std::string&, int)'
时间: 2023-09-14 14:06:00 浏览: 111
这个错误提示是因为在使用 `std::getline` 函数时,第二个参数应该是一个字符类型的值,而不是一个整数。正确的用法是:`std::getline(istream &is, string &str, char delim)`,其中 `delim` 是一个字符类型的值,代表要使用哪个字符作为分隔符。
如果您想读取整行输入并存储到一个字符串中,可以这样写:
```C++
#include <iostream>
#include <string>
using namespace std;
int main() {
string line;
getline(cin, line);
cout << line << endl;
return 0;
}
```
在这个例子中,我们使用 `getline` 函数从标准输入流中读取一行输入,然后将其存储到一个名为 `line` 的字符串中。最后,我们将 `line` 字符串打印出来。
相关问题
no matching function for call to 'std::vector<std::basic_string<char> >::vector(int, std::vector<std::basic_string<char> >::iterator)'怎么处理
这个错误提示表明,您试图使用 `std::vector` 的构造函数创建一个新的向量,但是传递给构造函数的参数不匹配。更具体地说,您可能传递了一个迭代器,但是构造函数期望的是一个初始容量的整数。
解决这个问题的方法取决于您的代码。以下是一些常见的解决方案:
1. 如果您确实打算使用一个迭代器来初始化向量,则应使用另一个构造函数。例如,如果您有一个 `std::vector<std::string>` ,并且想要使用其中的一部分元素来初始化一个新的向量,可以使用以下构造函数:
```c++
std::vector<std::string> vec1 = {"foo", "bar", "baz"};
std::vector<std::string> vec2(vec1.begin() + 1, vec1.end());
```
2. 如果您打算使用一个整数来初始化向量,则应检查您在调用构造函数时传递的参数是否正确。例如,如果您希望创建一个具有五个默认构造的 `std::string` 对象的向量,可以使用以下构造函数:
```c++
std::vector<std::string> vec(5);
```
如果您打算使用迭代器来初始化向量,则应确保您传递的是一个迭代器,而不是一个整数。例如,以下代码将导致错误:
```c++
std::vector<std::string> vec(5, vec1.begin());
```
如果您希望使用 `vec1` 的前五个元素来初始化向量,则应使用以下代码:
```c++
std::vector<std::string> vec(vec1.begin(), vec1.begin() + 5);
```
希望这些解决方案能够帮助您解决问题。
error: no matching function for call to 'std::basic_istream<char>::getline(char [100])' cin.getline(a);
这是一个关于编程的技术问题。这个错误表示在使用 std::cin.getline() 函数时输入了错误的参数。正确的用法是在函数中传递一个字符数组来存储输入的字符串,例如 std::cin.getline(a,100)。
阅读全文