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 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退