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

被折叠的 条评论
为什么被折叠?



