Iss_36 2014-07-18 02:22 采纳率: 0%
浏览 3410

mac系统下cin 输入出错的问题

在mac下用Xcode 5.0.2练习c++。碰到一个问题,困扰我一整天了。代码如下:

#include
#include
using namespace std;

int main()
{
double x;
string dummy;
while (true) {
cin>>x;
if (cin.fail()) {
cout<< "fail, and dummy is ";
cin.clear();
cin >> dummy;
cout << dummy << endl;
} else {
cout << "input number is " << x << endl;
}
}
return 0;
}

输入 a
输出是
fail, and dummy is
从结果来看,cin好像把a吞掉了,没有被读进dummy中,但是我查资料发现cin如果读取的类型不匹配,是会存在缓冲区里等待下次读取的,也就是说,输入 a,输出应该是
fail, and dummy is a

类似的代码在 vs2012下就是正确的。
或者,输入字母g,结果就正确了,输出是fail, and dummy is g,蛋疼的我试了下,a到f都不正确,g正确。好奇怪!
或者把double类型改为int,则输入a,结果也正确。

我在命令行下用clang++编译,问题依旧,用g++编译,问题依旧。

为什么会这样呢?是不是mac系统的问题?非常希望了解的前辈解答一下。

  • 写回答

1条回答

  • 「已注销」 2014-07-19 00:37
    关注

    cin.clear();
    每次这一句后面加上cin.sync();

    评论

报告相同问题?

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 shape_predictor_68_face_landmarks.dat
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料