在刷题过程中经常会遇到一些字符串输入的问题,在此做一些常用方法的整理,这里主要讲讲需要整行输入的情况
目录
1.cin
用法:接受一个字符串,遇“空格”、“回车”都结束。可配合循环依次读取单词
char s[10];
while(cin>>s){
cout<<s<<" ";
}
2.cin.get()
用法A:读取一个字符
char ch;
ch=cin.get();
//cin.get(ch); //效果同上,都只能读取一个字符
cout<<ch;
# 输入
abc
# 输出
a
用法B:cin.get(接收者s,长度n)
最多读取 n-1 位字符 + '\0' (这里 ‘\0'是终止符,是所有字符串的结尾标配)
遇到回车时结束,并将'\n'回车符保留在输入队列
char s[10];
cin.get(s,5);
cout<<s;
# 输入
1 3456
# 输出 (只有4位,中间弄了个空格为了证明读取不受空格影响)
1 34
*注意,当cin.get()连续读取多行,连续写就会出错,因为第二个cin.get()会读取保留的回车符然后结束
char s[10];
char b[10];
cin.get(s,8);
cin.get(b,5);
cout<<"s "<<s<<endl;;
cout<<"b "<<b;
# 输入
123
# 输出 (按了一次回车就结束了,根本不给输入第二行的机会T_T)
s 123
b
========正确写法========
char s[10];
char b[10];
cin.get(s,8);
cin.get(); // 变化在这,就多了这一行,相当于吃掉了那个回车符
cin.get(b,5);
cout<<"s "<<s<<endl;;
cout<<"b "<<b;
# 输入
123
456
# 输出 (这次输完第一行按下回车后,还有机会输入第二行)
s 123
b 456
3.cin.getline()
用法:cin.getline(接收者s,长度n)
最多读取 n-1 位字符 + '\0' (这里 ‘\0'是终止符,是所有字符串的结尾标配)
遇到回车时结束,与上条不同的是,会丢弃回车符
这就使得它用起来相对省心啦,可以连着写,妈妈再也不用担心我出bug了
char s[10];
char b[10];
cin.getline(s,5);
cin.getline(b,5);
cout<<"s "<<s<<endl;;
cout<<"b "<<b;
# 输入
123
456789
# 输出
s 123
b 4567
4.getline()
用法:getline(cin, string s)
该函数要配合string库食用... 记得导入 string库
#include<string>
...
string a,b;
getline(cin,a);
getline(cin,b);
cout<<"a "<<a<<endl;;
cout<<"b "<<b;
# 输入
1234
ha ha
# 输出
a 1234
b ha ha
**注意
所有的代码都只是保留了主干部分,运行要放进main函数里啊 /捂脸