i/o输入输出问题 c++

部分代码↓
int year;
cin >> year;
cout << "What is its street address?\n";
char address[80];
cin.getline(address, 80);
cout << "Year built: " << year << endl;
cout << "Address: " << address << endl;
cout << "Done!\n";
1如果year赋值"123 "在不知道几个空格的情况下用cin.get不足够的,如何清空留在缓存之类的?使得assress可以输入;不用cin.get(char ch,size,char delim);

2如果用cin.get(char ch,size,char delim);那我输出了超出int的范围;那他就会超出覆盖到了assress,怎样在输入year值后清除后面再缓冲区之类的给后面cin的内容呢?(可能表达不清~请见谅=3=

getline能够过滤掉行尾的回车符,但不能过滤空格;cin>>能够过滤空格,但输入时需要清除行尾的回车符。一般使用getline整行输入,再自己去分隔输入的内容。
您只想一行输入一个字段,可用这个方法(它会忽略掉输入的换行,中间插入提示信息):
cin >> year;
cin.ignore();
...
cin.getline(address, 80, '\n');
cin.clear();

如果想支持一行内输入全部字段,用这种方法(它能忽略掉字符串的前导空格):
cin >> year;
cin.ignore();
cin >> address;
cin.ignore();
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-09
fflush(stdin)清空缓存
相似回答
大家正在搜