vc6.0 中getline需要按两次回车的解决方法

本文解决了一个c++标准库模板函数getline在读取字符串时出现的bug,即在读到限定符后还会读取额外字符。通过修改微软Visual Studio VC98 Include目录下的string文件,将snextc()替换为sbumpc()来修复此问题。已确认此bug存在于微软产品的早期版本中,并已在后续版本中得到修正。

c++的标准库模板函数getline在读到限定符后还要读取额外字符...
解决方法:进入

  • X:\Program Files\Microsoft Visual Studio\VC98\Include

打开string(注意,不是string.h),然后找到以下代码段. 将snextc()换成sbumpc()

else if (_Tr::eq((_E)_C,_D)) 
{_Chg = true; 
_I.rdbuf()->snextc(); // 把这一行注释掉,也可删掉 
_I.rdbuf()->sbumpc(); //添加这一行,这行本来没有 
break; 
}

现状:微软已经确认这是他们产品中的'臭虫'(bug),这个bug已经在Microsoft Visual C++ .NET得到修正.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值