getline与cin.getline()之间的区别
时间: 2023-10-22 18:30:15 浏览: 119
getline和cin.getline()都是用于从输入流中读取一行数据的函数,但是它们有一些区别:
1. 参数类型:getline函数的参数类型是istream&,而cin.getline()函数的参数类型是char*。
2. 行结束符:getline函数默认以换行符'\n'作为行结束符,而cin.getline()函数以回车符'\r'或换行符'\n'作为行结束符(根据操作系统的不同)。
3. 处理行结束符:getline函数会将行结束符从输入流中提取并丢弃,而cin.getline()函数会将行结束符留在输入流中。
4. 处理空格:getline函数会将行中的空格字符一起读取并存储在字符串中,而cin.getline()函数默认会跳过开头的空格字符,只读取非空格字符。
举个例子来说明区别:
```cpp
#include <iostream>
using namespace std;
int main() {
char str1[100], str2[100];
cout << "Enter a string with spaces: ";
cin.getline(str1, 100); // 使用cin.getline()
cout << "str1: " << str1 << endl;
cout << "Enter another string with spaces: ";
getline(cin, str2); // 使用getline()
cout << "str2: " << str2 << endl;
return 0;
}
```
运行以上代码,当输入 "Hello World" 时:
使用cin.getline()输出:
```
str1: Hello World
```
使用getline()输出:
```
str2: Hello World
```
可见,cin.getline()跳过了开头的空格字符,而getline()将其一并读取到了字符串中。
阅读全文