栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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: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;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/937983.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号