C++中的cin.get()&&cin.getline()

C++中的cin.get()&&cin.getline()

一、cin.get()

#include 
using 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:\Users\28374\AppData\Roaming\Typora\typora-user-images\image-20220531213608183.png)]

在这里a_1收到的第一个字符是’*‘第二个就是’\n’了。

二、cin.getline()

此时cin.getline()就可以解决问题了

//cin.getline()也有三个参数,第一个为字符指针,第二个为长度,第三个为终止符至少要有两个参数
/*默认终止符为换行符,如果换了终止符就可以输入换行符和制表符之类的了,当然上面的get如果换了终止符,同样也可
以输入换行符,制表符,当然了也会出现上述问题,所以输入字符数组,想要有空格和换行符之类的就用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;
}

你可能感兴趣的:(C++,c++,开发语言)