C++字符串的输入方式
文章目录
1、cin输入字符串
接收一个字符串,遇到空格和tab键结束接收,回车键表示输入结束;此外定义a[20],则字符串长度要小于20,最后有个’\0’(否则输入超过20的连续字符串会报错)。
//实例代码
char a[20];
cin >> a;
cout << a << endl;
cout << a[3] << endl;
cout << a[19] << endl;
//运行结果
abcd dhfdkf dsdfdsfsafgfdfgfdgdsa//输入字符串
abcd//输出a
d//输出a[3]
//实例代码
string a;
cin >> a;
cout << a << endl;
cout << a[3] << endl;
cout << a[19] << endl;
//运行结果
abcd dhfdkf dsdfdsfsafgfdfgfdgdsa//输入
abcd
d
//报错:Expression: string subscript out of range,a[19]溢出了
2、cin.get()输入字符
接收第一个字符并赋值给ch,不论第一个字符是空格、tab键抑或是回车键,以下四种不同情况输出分别是普通字符,空格符,tab键和回车符。
//实例代码
char ch;
ch = cin.get();
cout << ch;
cout << "=============================";
//运行结果(输入字符串)
addfffe dff ddf
a=============================
//运行结果(输入空格)
abcdfgav
=============================
//运行结果(输入Tab)
adfgjffdss
=============================
//运行结果(输入回车)
=============================
3、cin.get(字符数组名,接收字符数)输入字符串
cin.get()接收一行字符串包括空格和tab键(接收数量需减一,留一个位置给‘\0’),其中接收字符数一定要小于等于定义字符数组大小,不然一旦输入字符串长度大于数组大小会报错。
//实例代码
char a[20];
cin.get(a, 20);
cout << a << endl;
cout << a[5];
//运行结果
abcdef dfsf//输入字符串
abcdef dfsf
f
cin.get()不传入参数是为了吃掉输入流中的回车。(比较下面两组输入输出)
//实例代码
char a[20];
char b[20];
cin.get(a, 20);
cin.get();
cin.get(b, 20);
cout << a << endl;
cout << b;
//运行结果
abcd//输入
qwer//输入
abcd
qwer
//实例代码
char a[20];
char b[20];
cin.get(a, 20);
cin.get(b, 20);
cout << a << endl;
cout << b;
//运行结果(注意此时cout << b与cout << '\r'等价而非'\n',重要!!!)
abcd//输入
abcd
4、cin.getline()输入字符串
cin.getline()传入两个参数时与cin.get()类似
//实例代码
char a[20];
cin.getline(a, 20);
cout << a;
//运行结果
abdc dfda//输入字符串
abdc dfda
与cin.get()区别在于当cin.getline()传入第三个参数时cin.getline(a,20,’f’),接收字符串到’f’为止
//实例代码
char a[20];
cin.getline(a, 20, 'f');
cout << a;
//运行结果
abdc dfda//输入
abdc d
5、getline()输入字符串(#include< string >)
getline(cin,字符串名字),getline()接收一个字符串,包括空格与tab键,唯一要注意的是,getline()属于string流,求字符串长度时不能用strlen(),应该用str.length()。
//实例代码
string str;
getline(cin, str);
cout << str << endl;
//运行结果
abcd efgh ght//输入字符串
abcd efgh ght
6、gets_s()输入字符串
gets_s(字符串名字)输入字符串可以接收空格和tab键,回车结束
//实例代码
char a[20];
char b[20];
gets_s(a);
gets_s(b);
cout << a << endl;
cout << b;
//运行结果
qwer qwer qwer//输入
abcd abcd abcd//输入
qwer qwer qwer
abcd abcd abcd
7、getchar()输入字符
getchar()接收字符串的第一个字符包括(空格、tab键、换行符)
//实例代码
char a;
a = getchar();
cout << a;
//运行结果
abcd
a
注意所有字符串的输入(包括cin.get()、cin.getline()、getline、gets_s),如果接在cin>>a输入流后,中间必须增加cin.ignore()用以吞掉换行符。
本文参考这篇文章C++ 字符串的输入的几种方法_YULIU_的博客-CSDN博客_c++字符串输入函数然后经过我自己总结而成,如有不足请多指教!!!