c++字符串输入总结:cin、getchar和scanf、cin.get()、gets、cin.getline()、getline
1、cin: 接收字符串时,遇“空格”、“TAB”、“回车”都结束
char a[20];
cin>>a;
cout<<a;
//遇到空格、回车键结束
2、scanf: 接收字符串时,遇“空格”、“TAB”、“回车”都结束
getchar: 接收一个字符
char ch2[20]; // 字符数组
scanf("%s", ch2);
printf("%s\n", ch2);
getchar(); // 用完 scanf 后,清除缓冲区
/* 注:scanf读取字符时遇到空格和回车符时都会停止读取,
此时输入缓冲区还剩一个\n,如果不清除,会影响下一次的输入*/
3、 cin.get(): 接收字符串时, 可以接收空格
#include<iostream>
using namespace std;
int main() {
char ch;
cin.get(ch); //获取一个字符
cout<<ch<<endl;
getchar(); //清除缓存区
char ch2[20];
cin.get(ch2,10); //获取字符串,存入ch2中,限制长度为10-1=9
cout<<ch2;
return 0;
}
4、gets(): 接收字符串时, 可以接收空格
char ch1 [20]; // 字符数组
gets(ch1); // 输入 不能写成ch1=gets();
puts(ch1); // 输出
5、cin.getline():接收字符串时,可以接收空格并输出
#include<iostream>
using namespace std;
int main(){
char m[20];
cin.getline(m,4); //存入m,限制长度为4个字符,第5个位置存\0
cout<<m<<endl;
return 0;
}
#include<iostream>
using namespace std;
int main(){
char m2[20];
cin.getline(m2,5,'a'); //存入m,限制长度为4个字符,第5个位置存\0, 遇到字符a停止
cout<<m2<<endl; //当输入123abcde时,输入123
return 0;
}
6、getline() : 接收字符串时,可以接收空格并输出,需包含头文件“ #include<cstring> ”
#include<iostream>
#include<cstring>
using namespace std;
int main(){
string str;
getline(cin, str);//用于string字符串类型,存入带空格的字符串
cout <<"str= "<< str << endl;
char a[10];
cin.getline(a, 6);//用于字符数组类型,存入带空格的字符串
cout <<"a= "<< a;
}