请问以下两段代码输出为什么会不同?
代码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()没什么影响的啊~
为什么两次输入得到的结果会不同?
关于cin.gcount()的问题
答案:1 悬赏:10
解决时间 2021-01-30 03:10
- 提问者网友:相思故
- 2021-01-29 12:38
最佳答案
- 二级知识专家网友:浪女动了心
- 2021-01-29 13:35
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.
”
希望对你能起到一点帮助,继续关注
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.
”
希望对你能起到一点帮助,继续关注
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯