一、cin.get()
#includeusing namespace std; int main() { //对cin.get() //单个字符输入 char ch,ch_1; cin.get(ch); //因为返回的是对象cin可以这样连续用 cin.get(ch).get(ch_1); //cin.get()的另外一种用法,就是让它返回字符 ch = cin.get(); //对字符串操作,至少要有两参数 char a[100],a_1[100]; //第一个参数是要输入类型为char* ,第二个是设定输入长度,第三个是终止符 cin.get(a,100);//此时最大有效个数为99(n-1)个字符,默认以换行作为结束符 //如果下一行直接再用如下语句就会有问题 cin.get(a_1,100); //此时就是在输入完a字符串后按了回车键那么a_1的第一个收到的字符串为'n' //就直接结束了,a_1就没有了输入 return 0; }
而当我对a和a_1的输入使用了终止符,a_1的输入会把a的终止符都进去并且多读入一个换行,虽然此时可以接着输入,但也不是我所期望的结果。如果a和a_1使用了相同的终止符结果会一致。
cin.get(a,100,'*'); cin.get(a,100,'!');
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-elyJJUgJ-1654005440278)(C:Users28374AppDataRoamingTyporatypora-user-imagesimage-20220531213608183.png)]
在这里a_1收到的第一个字符是’*‘第二个就是’n’了。
二、cin.getline()
此时cin.getline()就可以解决问题了
//cin.getline()也有三个参数,第一个为字符指针,第二个为长度,第三个为终止符至少要有两个参数 cin.getline(a,100,'*'); cin.getline(a_1,100,'*'); //这样子就会满足输入需求了 //如果行输入就不要设定终止符就好了
注意cin.getline()返回的不是cin对象。
三、string类内的geiline()函数
getline()的原型是istream& getline ( istream &is , string &str , char delim );
getline()有三个参数,第一个是cin,第二个定义的字符串类的实例对象,第三个是终止符默认为’n’。
#include#include using namespace std; int mian() { string a; getline(cin,a); //可以获取一行字符串 getline(cin,a,'*'); return 0; }



