中易网

关于cin.gcount()的问题

答案:1  悬赏:10  
解决时间 2021-01-30 03:10
请问以下两段代码输出为什么会不同?

代码1:
void main()
{
char a[10];
cin.getline(a,10); //输入"123456789"
cout << a << endl; //输出"123456789"
cout << cin.gcount(); //输出10
}

代码2:
void main()
{
char a[10];
cin.getline(a,10); //输入"1234567890"
cout << a << endl; //输出"123456789"
cout << cin.gcount(); //输出9
}

我知道cin.getline()会自动加入结束符,所以第二次输入中,最后的0不会被接受,但应该对cin.gcount()没什么影响的啊~
为什么两次输入得到的结果会不同?
最佳答案
char a[10];
cin.getline(a,10); //输入"12345"
cout << a << endl; //输出"12345"
cout << cin.gcount()<<endl; //输出6

char b[10];
cin.getline(b,10); //输入"1234567890"
cout << b << endl; //输出"123456789"
cout << cin.gcount()<<endl; //输出9

char c[10];
cin.getline(c,10); //被跳过
cout << c << endl; //输出一个空格
cout << cin.gcount()<<endl; //输出为0

对cin的机制不是很了解,不过对你的问题很好奇,试着调整了下你的代码。输入三次发现第二次的输入对第三次getline有影响。第三次输出的gcount为0,MSDN上的解释是“Formatted extraction operators may call unformatted input functions and thus reset this number.


希望对你能起到一点帮助,继续关注
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
赫山区益阳北方饺子馆(金山北路)地址是什么,
天字五行属什么
信用卡越多越好吗?
龙门县平陵税务分局地址好找么,我有些事要过
摄影师需要什么素质
金盾地址在什么地方,想过去办事
交流电压380v如何转换为直流500v
一个女孩说很想我是什么意思
last man standing 游戏怎么注册
赤金红檀木是一种木材的名称吗?产自哪里?名
是不是高净度的钻石就是高品质的钻石
E, VS1 , 0.3CT , 3EX 这么个钻戒现在值多,
上传限制大于100M,文件无限制保存,永久免费
什么手机游戏像战地2?
昨天晚上梦见我妈妈用剪子在我大腿上剪了三道
推荐资讯
胜家小学地址好找么,我有些事要过去
爸妈50岁了,我21岁,怎样担起一个家庭。。是
我的电脑硬件启动很慢。以前的时候电脑开始三
战栗是意思是什么
对方欠我3200元,不还又不理我!所以打算收利
我老公在济南铁路大厂上班,每天早上8点上班
我是河南商丘的,哪里有出售鹅苗的
什么是中国元代戏曲艺术的统称杂据角色分为哪
三国赵云传光盘如何安装?
金秀贤主演的好看的韩剧有哪些
两个电机拼线接互相会影响吗
配海军风的连衣裙应该穿什么鞋子
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?