(转)getline函数的一个小bug

当使用getline从cin读取字符串时,程序会在遇到分隔符后额外读取一个字符,导致需要两次回车才能继续执行。这是Visual C++ .NET中getline模板函数的一个已知bug。解决方案是修改系统头文件中的getline成员函数,通过调整snextc和stossc来避免读取额外字符。完成修改后,问题得到解决。
摘要由CSDN通过智能技术生成

这个是出问题的程序
#include <iostream>
#include <string>
int main()
{    using namespace std;
    string str;
    std::cout<<"Please input your name:/n";
    getline(cin,str);
    std::cout<<"Hello,"<<str<<"!!/n";
}
比如说,我们输入"virus welcome back!",但是当我们输入后按回车,程序并不运行cout语句,而是光标还在编绎窗口上闪动,要再按一下[ENTER]才会运行cout这个语句输出,最后在microsof得解:
The getline template function reads an extra character after encountering the delimiter
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值