1.cin.get()
用法1: cin.get(字符变量名)可以用来接收字符
#include <iostream>
using namespace std;
int main()
{
char ch;
ch = cin.get();
cout << ch << endl;
return 0;
}
输入:ads1
输出:a
用法2: cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格
#include <iostream>
using namespace std;
int main()
{
char a[20];
cin.get(a,20);
cout << a << endl;
return 0;
}
输入:123 jkl sim
输出 :123 jkl sim
输入:abcdeabcdeabcdeabcdeabcde (输入25个字符)
输出:abcdeabcdeabcdeabcd (接收19个字符+1个’\0’)
2、cin.getline()
;用法:接受一个字符串,可以接收空格并输出,与cin.get()不同的是,cin.getline()实际上有三个参数,第三个字符为结束字符,当第三个参数省略时,系统默认为’\0’
#include <iostream>
using namespace std;
int main()
{
char a[5];
cin.getline(a,5);
cout << a << endl;
return 0;
}
输入:jkljkljkl
输出:jklj
可以发现cin.get()与cin.getline()在接收字符数组时,除了cin.getline第三个隐藏的参数,没有什么差别,需要将数组的大小作为第二个参数。而用cin.get接收字符串cin.get(str)时候,默认只获取第一个字符。
我们把char a[N]这种称字符数组,char s称为一个字符,string str称为一个字符串。根据接收它们来做个对比。
函数 | 方法 |
---|---|
cin.get() | 当处理一个字符数组的时候,cin.get(a,N) |
cin.getline() | 当处理一个字符数组的时候,cin.getline(a,N),与cin.get()的不同点是它具有隐藏的第三个参数’\0’ |
cin.get() | 当处理一个字符时,cin,get(s),这里键盘可以敲入多个字符,但是只识别第一个字符 |
getline() | 它仅用于处理string字符串,getline(str) |
gets_s() | 当处理一个字符数组的时候,gets_s(a) |
总结:
- 当处理一个字符数组的时候,使用gets_s(a)较cin.get() 和cin.getline()少一个参数,更加方便
- 当处理一个字符的时候,使用cin.get()
- 当处理string类型字符串时,使用getline(str)