我正在尝试运行以下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)进行编译,我得到了这种奇怪的行为。想不出可能会发生什么......