一、不需要包含string头文件(基于字符数组)
1.cin>>
(1)接收一个数字
int a, b;
cin >> a >> b;
int c = a + b;
(2)接收一个字符串(无空格、单词)
char a[10];
cin >> a;
string b;
cin >> b;
2.cin.get()
(1)一个参数:(字符变量名)用来接收单个字符,也可改写为 字符变量名=cin.get()
char ch;
cin.get(ch); // 或者ch=cin.get();
(2)两个参数:(字符数组名,接收字符数n)用来接收一行字符串,可以接收空格。最后一个字符会自动填为 '\0',所以只接受 n-1 个字符
char a[10];
cin.get(a, 10); // 只能接收9个显示字符,自动给'\0'留了位置
string b;
cin.get(b, 5); // 错误
(3)没有参数:可以用来舍弃输入流中不需要的字符或回车,弥补(2)的不足,若不舍弃回车,则后续需输入的每个字符串的首字符都是'\0';也可以作(1)使用
char a[10],b[10]; // 不能为string a, b;
cin.get(a, 10);
char ch = cin.get(); // 相当于getchar()
cin.get(b, 10);
3.cin.getline()
有三个参数,分别为(接收字符串,接收个数,结束字符),可以接收空格。当第三个参数省略时,系统默认为是 '\n' 或 '\0'
char a[10]; // 不能为string a;
cin.getline(a, 5, 'g');
二、需要包含string头文件(基于字符串)
1.getline(cin,str)
有两个参数,接收一个字符串,可以接收空格。
string a;
getline(cin, a);
该函数的功能是允许从输入流中读取多个字符(默认是换行符),在读取完成后,从读取的内容中删除该终止字符。
2.gets(str)
有一个参数,接收一个字符串,可以接收空格。
char a[10];
gets(a); // 有错,不知道错哪
3.getchar()
无参数,仅接收单个字符。getchar()为C语言的函数,尽量少用。
char ch;
ch = getchar(); // 不能写成getchar(ch);