在我的第一个输入项之后,我的第二个Entery NodeElement (Element ... )
字段将填充上一个条目的输入缓冲区。为什么?我什至在使用name
,但问题仍然存在。请帮我解决这个问题。这是跳入C ++ 书中的问题。
getline
答案 0 :(得分:1)
cin >> p[i].PhoneNumber;
仅获取数字。这样一来,在您下次尝试读取行时,仍会在输入缓冲区中结束该行。
答案 1 :(得分:1)
阅读getline的参考文献时,您会看到正在发生的事情:
在用空格分隔的输入后立即使用时,例如
之后int n;
std::cin >> n;
getline(cin, n); //if used here
getline
消耗operator>>,
留在输入流中的结束符并立即返回。常见的解决方案是使用
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
在切换到面向行的输入之前。