getline为什么有两个**
时间: 2023-09-01 17:07:15 浏览: 110
`getline`函数在C++标准库中有两个重载版本,其中一个版本的参数为`istream`类型的引用和`string`类型的引用,另一个版本的参数为`istream`类型的引用、`string`类型的引用以及一个字符类型的参数。这两个版本的函数名都是`getline`,但是它们的参数列表不同,因此编译器可以根据参数类型的不同来确定使用哪个版本的函数。第一个版本的函数用于从输入流中读取一行字符串并存储到给定的字符串对象中,第二个版本的函数除了读取一行字符串之外,还可以指定行分隔符。
相关问题
getline为什么两个**
`getline` 函数有两个星号是因为它的第一个参数是一个字符指针的指针,也就是说我们需要传递一个指向字符指针的指针。这是因为 `getline` 函数会自动分配内存来存储输入的字符串,并将指向该内存的指针存储到传递的字符指针中。因此,我们需要传递一个指针的指针,以便在函数内部修改指向字符指针的指针的值。 例如:
```
char* line = NULL;
size_t len = 0;
getline(&line, &len, stdin);
```
在这个例子中,`&line` 是一个指向 `line` 指针的指针,`&len` 是一个指向 `len` 变量的指针,`stdin` 则表示输入流。`getline` 函数会从输入流中读取一行字符串,并将指向该字符串的指针存储到 `line` 指针中。注意,`line` 指针需要在使用完毕后手动释放内存,例如:
```
free(line);
```
getline为什么不起cin作用
`getline()` 和 `cin` 是两个不同的函数,其作用也不相同。
`cin` 是用于从标准输入流中读取数据的函数,通常用于读取用户从键盘输入的数据。而 `getline()` 则是一个读取一行文本数据的函数,可以从文件或者字符串中读取一行数据,并将其存储到一个字符串变量中。
当你使用 `getline()` 函数时,需要指定要读取数据的流对象(例如 `cin` 或者 `ifstream`),然后将读取的数据保存到一个字符串变量中。如果你想从键盘输入数据,并使用 `getline()` 函数读取数据,可以将 `cin` 作为参数传递给 `getline()` 函数,例如:
```cpp
#include <iostream>
#include <string>
int main() {
std::string input;
std::getline(std::cin, input);
std::cout << "You entered: " << input << std::endl;
return 0;
}
```
这段代码将从键盘读取一行输入,并将输入保存到 `input` 变量中。最后将输入输出到标准输出流上。
因此,`getline()` 和 `cin` 并不是相互替代的,它们各自有其独特的作用。
阅读全文