输入字符串类型的电话号码为什么要用cin.getline()
时间: 2023-10-22 08:35:22 浏览: 35
在 C++ 中,使用 `cin` 读取字符串时,如果字符串中含有空格或者换行符,`cin` 就会停止读取,导致读取不完整。
例如,下面的代码会导致只读入了字符串的一部分:
```c++
#include <iostream>
using namespace std;
int main() {
string str;
cin >> str;
cout << str << endl;
return 0;
}
```
如果输入的字符串为 `"hello world"`,那么输出的结果只有 `"hello"`。
为了解决这个问题,可以使用 `getline()` 函数读取字符串,例如:
```c++
#include <iostream>
#include <string>
using namespace std;
int main() {
string str;
getline(cin, str);
cout << str << endl;
return 0;
}
```
使用 `getline()` 函数,可以读取包括空格在内的整个字符串。
但是,如果在读取电话号码时使用 `getline()` 函数,会导致读入的电话号码包含换行符,因此需要使用 `cin.getline()` 函数,例如:
```c++
#include <iostream>
#include <string>
using namespace std;
int main() {
string phone;
cin.getline(phone, 18);
cout << phone << endl;
return 0;
}
```
这样可以确保读入的电话号码不包含换行符。需要注意的是,第二个参数表示字符串的最大长度,不能超过这个长度。