永发信息网

C++问题,为什么回车两次才输出结果呢??

答案:2  悬赏:80  手机版
解决时间 2021-03-09 09:38
int main()
{
string line;
// read line at time until end-of-file
while (getline(cin, line))
cout << line << endl;
return 0;
}
最佳答案
因为getline有三个参数,第三个参数是字符串的结束符,也就是当getline遇到这个结束符时,就不在接受输入了,getline默认情况下以回车('\n')作为结束符,第一次按回车表示字符串结束,第二次按回车才开始输出。
你可以通过多读一次char的方法放掉这个回车符。这个在C++编程思想里有很详细的解释,你可以找来看看的。

FIX: getline Template Function Reads Extra Character

RESOLUTION

Modify the getline member function, which can be found in the following system header file "string", as follows:

else if (_Tr::eq((_E)_C, _D))
{_Chg = true;

// _I.rdbuf()->snextc(); // Remove this line and add the line below.
_I.rdbuf()->sbumpc();
break; }

STATUS

Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.

This problem was corrected in Microsoft Visual C++ .NET.

MORE INFORMATION

The following sample program demonstrates the bug: //test.cpp

#include
#include
int main () {
std::string s,s2;
std::getline(std::cin,s);
std::getline(std::cin,s2);
std::cout << s <<'\t'<< s2 << std::endl;
return 0;
}

//Actual Results:

Hello
World

Hello World

//Expected Results:

Hello
World
Hello World

--------------------------------------------------------------------------------

APPLIES TO
• The Standard C++ Library, when used with:
Microsoft Visual C++ 6.0 Enterprise Edition
Microsoft Visual C++ 6.0 Professional Edition
Microsoft Visual C++ 6.0 Standard Edition
全部回答
cin>>c; 修改为: cin.read(&c, 1); 函数>>是读串送给c,可以理解为是将输入的串送给c的一个命令; read是读1(第二个参数)个字节送给c,此时是个命令,同时也是一个字节,如果不输入任意字符直接输入的话,那么read将赋给了c,从而循环。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
windows10 系统自带颜色校准出现问题
描写钢铁工人的诗,要自己写的那种。 50分
成语静默如初还是静好如初?
中国联通圣音智能手机旗舰店地址在什么地方,
林涛周末不得不上钢琴可吗?(翻译成英语)
微信上的高仿手表可信吗
请问那种日本的,灌风的纸鱼叫什么名字?
为什么中国北方一到冬天就要供暖?那边很冷吗
衣时屋名品折扣王府店怎么去啊,有知道地址的
胃胀气的人适合吃红豆薏仁粥吗
以“赞美”为话题的作文,500字,急急急急急
下列中属于商业银行中间业务创新的有()。A.结
谁知道“咸带鱼的那个相声”叫什么名?
姓氏: 楼姓的起源和传播?
汽车气压制动系由哪些部件组成?
推荐资讯
【一学期几个月】高中一学期及个月?多少天?
蔡家巷5号大院怎么样?好不好?值不值得买?
相恋的人每天联系是不是很不好,女朋友一直都
老是梦到以前喜欢的人
麻园村村这个地址在什么地方,我要处理点事
郑州大学 计算机信息管理本科的 04736数据库
Rockport 尺码问题,2E加宽 与D区别有多大
高记川一刀瓜州路总店在哪里啊,我有事要去这
荣威RX5自动旗舰版后视镜下面带转向灯吗
96×102减192怎样简便计算
大家觉得建筑行业未来会不会衰落
两个数的积是27点5如,如果一个数 增加3点5,另
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?