s********h 发帖数: 286 | 1 一个很简单的 stream input 小程序,目的是读入名字,ID号码,及其它信息。
我的问题是,如果先读入名字,再读入 ID,就一切正常,可是如果先读入 ID,在读名
字的时候,就会自动跳过,不让我输入名字了。我的程序如下:
#include
using namespace std;
int main()
{
unsigned idNumber;
char firstName[30];
int hoursWorked;
char ch = '\0';
int i = 0;
cout << "Please enter your first name: ";
while (1) {
cin.get(ch);
if (ch == '\n') break;
firstName[i++] = ch;
}
firstName[i] = '\0';
cout << "Please enter your ID Number: ";
cin >> idNumber;
cout |
j*****a 发帖数: 436 | 2 把 cout << endl;换成 cin.get();
因为cin >> idNumber;中idNumber只接受了数字,而把"\n"符剩下了。 |
s********h 发帖数: 286 | 3 多谢你啊!你的方法真的解决了问题!等下马上给你发包子啊!
不过还是不太理解,为什么这样的语句后面接着读入 hoursWorked 就没问题,可是它
如果接着读入 firstName 就出问题呢?
【在 j*****a 的大作中提到】 : 把 cout << endl;换成 cin.get(); : 因为cin >> idNumber;中idNumber只接受了数字,而把"\n"符剩下了。
|
j*****a 发帖数: 436 | 4 hoursWorked也是数字,当读入时,它扫描你的输入,跳过'\n'符号而只接受后面的数字。而读入firstName时,你的输入循环,一上来就遇到'\n'符号,直接就结束了输入循环。所以要在循环前加一个cin.get()把你输入的回车符号给吃掉。
【在 s********h 的大作中提到】 : 多谢你啊!你的方法真的解决了问题!等下马上给你发包子啊! : 不过还是不太理解,为什么这样的语句后面接着读入 hoursWorked 就没问题,可是它 : 如果接着读入 firstName 就出问题呢?
|
s********h 发帖数: 286 | 5 哦,我明白了!真谢谢你啊!
包子已经转了,请你查收吧!:)
数字。而读入firstName时,你的输入循环,一上来就遇到'\n'符号,直接就结束了输
入循环。所以要在循环前加一个cin.get()把你输入的回车符号给吃掉。
【在 j*****a 的大作中提到】 : hoursWorked也是数字,当读入时,它扫描你的输入,跳过'\n'符号而只接受后面的数字。而读入firstName时,你的输入循环,一上来就遇到'\n'符号,直接就结束了输入循环。所以要在循环前加一个cin.get()把你输入的回车符号给吃掉。
|
j*****a 发帖数: 436 | 6 谢啦!:-)
【在 s********h 的大作中提到】 : 哦,我明白了!真谢谢你啊! : 包子已经转了,请你查收吧!:) : : 数字。而读入firstName时,你的输入循环,一上来就遇到'\n'符号,直接就结束了输 : 入循环。所以要在循环前加一个cin.get()把你输入的回车符号给吃掉。
|