cin.clear和吃掉输入(仅在Mac上使用LLVM?)

时间:2013-12-27 21:19:18

标签: c++ hex llvm clear cin

我正在尝试运行以下C ++代码:

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str, str2;
    double v;
    cin >> str;
    cin >> v;
    if (!cin) cin.clear();
    cin >> str2;
    cout << str << endl << str2 << endl;
}

当我在以下输入上运行时,我得到以下输出:

INPUT: 你好1世界

输出: 你好
世界

INPUT: 你好世界

输出: 你好
世界

INPUT: 你好1world

输出: 你好
世界

INPUT: 你好abcdefworld

输出: 你好
世界

INPUT: 你好abcdefghijklmnop

输出: 你好
ghijklmnop

INPUT: 你好所有

输出: 你好
LL

INPUT: 你好猫科动物

输出: 你好
线

除了最后几个,这对我有意义。看起来在尝试阅读双V时,A-F之间的所有角色都被吃掉了,我无法让它们回来。这与读取十六进制数字有关吗?你怎么避免它?

编辑添加:我尝试在Linux机器上运行它,它按预期工作。在Mac OS X 10.9上,使用Apple LLVM 5.0(clang-500.2.79)进行编译,我得到了这种奇怪的行为。想不出可能会发生什么......

0 个答案:

没有答案