C++ cin的未知行为
首先,我想说,我知道使用getline是一个更好的选择,但是,我很好奇为什么这段代码不能像预期的那样工作:我不知道为什么C++ cin的未知行为,c++,C++,首先,我想说,我知道使用getline是一个更好的选择,但是,我很好奇为什么这段代码不能像预期的那样工作:我不知道为什么 #include <iostream> #include <string> using namespace std; int main() { while(1) { int input; cout << "---> "; cin >> input;
#include <iostream>
#include <string>
using namespace std;
int main() {
while(1) {
int input;
cout << "---> ";
cin >> input;
if(cin.fail()) {
char rd = cin.get();
cout << "failure" << rd << "=" << cin.fail() << " " << endl;
}
}
return 0;
}
#包括
#包括
使用名称空间std;
int main(){
而(1){
int输入;
cout>输入;
if(cin.fail()){
char rd=cin.get();
cout获取输入整数后,按enter键时会得到一个换行符作为字符。与字符输入相同
#include <iostream>
#include <string>
using namespace std;
int main() {
while(1) {
int input;
cout << "---> ";
cin >> input;
getchar();
if(cin.fail()) {
char rd = cin.get();
getchar();
cout << "failure" << rd << "=" << cin.fail() << " " << endl;
}
}
return 0;
}
#包括
#包括
使用名称空间std;
int main(){
而(1){
int输入;
cout>输入;
getchar();
if(cin.fail()){
char rd=cin.get();
getchar();
cout获取输入整数后,按enter键时会得到一个换行符作为字符。与字符输入相同
#include <iostream>
#include <string>
using namespace std;
int main() {
while(1) {
int input;
cout << "---> ";
cin >> input;
getchar();
if(cin.fail()) {
char rd = cin.get();
getchar();
cout << "failure" << rd << "=" << cin.fail() << " " << endl;
}
}
return 0;
}
#包括
#包括
使用名称空间std;
int main(){
而(1){
int输入;
cout>输入;
getchar();
if(cin.fail()){
char rd=cin.get();
getchar();
cout获取输入整数后,按enter键时会得到一个换行符作为字符。与字符输入相同
#include <iostream>
#include <string>
using namespace std;
int main() {
while(1) {
int input;
cout << "---> ";
cin >> input;
getchar();
if(cin.fail()) {
char rd = cin.get();
getchar();
cout << "failure" << rd << "=" << cin.fail() << " " << endl;
}
}
return 0;
}
#包括
#包括
使用名称空间std;
int main(){
而(1){
int输入;
cout>输入;
getchar();
if(cin.fail()){
char rd=cin.get();
getchar();
cout获取输入整数后,按enter键时会得到一个换行符作为字符。与字符输入相同
#include <iostream>
#include <string>
using namespace std;
int main() {
while(1) {
int input;
cout << "---> ";
cin >> input;
getchar();
if(cin.fail()) {
char rd = cin.get();
getchar();
cout << "failure" << rd << "=" << cin.fail() << " " << endl;
}
}
return 0;
}
#包括
#包括
使用名称空间std;
int main(){
而(1){
int输入;
cout>输入;
getchar();
if(cin.fail()){
char rd=cin.get();
getchar();
coutcin.fail()检测输入的值是否符合变量中定义的值。
但如果cin.fail()为真,则表示
a) 输入的值与变量不匹配
b) 变量E不会受到影响
c) 河道内的水流仍然断流
d) 输入的值仍在缓冲区中,将用于下一条“cin>>变量”语句
因此,您必须执行以下操作:
a) 通过cin.clear()修理内流
b) 用cin.ignore(std::numeric_limits::max(),'\n')清除缓冲区
#包括
#包括
使用名称空间std;
int main(){
而(1){
int输入;
cout>输入;
if(cin.fail()){
char rd=cin.get();
coutcin.fail()检测输入的值是否符合变量中定义的值。
但如果cin.fail()为真,则表示
a) 输入的值与变量不匹配
b) 变量E不会受到影响
c) 河道内的水流仍然断流
d) 输入的值仍在缓冲区中,将用于下一条“cin>>变量”语句
因此,您必须执行以下操作:
a) 通过cin.clear()修理内流
b) 用cin.ignore(std::numeric_limits::max(),'\n')清除缓冲区
#包括
#包括
使用名称空间std;
int main(){
而(1){
int输入;
cout>输入;
if(cin.fail()){
char rd=cin.get();
coutcin.fail()检测输入的值是否符合变量中定义的值。
但如果cin.fail()为真,则表示
a) 输入的值与变量不匹配
b) 变量E不会受到影响
c) 河道内的水流仍然断流
d) 输入的值仍在缓冲区中,将用于下一条“cin>>变量”语句
因此,您必须执行以下操作:
a) 通过cin.clear()修理内流
b) 用cin.ignore(std::numeric_limits::max(),'\n')清除缓冲区
#包括
#包括
使用名称空间std;
int main(){
而(1){
int输入;
cout>输入;
if(cin.fail()){
char rd=cin.get();
coutcin.fail()检测输入的值是否符合变量中定义的值。
但如果cin.fail()为真,则表示
a) 输入的值与变量不匹配
b) 变量E不会受到影响
c) 河道内的水流仍然断流
d) 输入的值仍在缓冲区中,将用于下一条“cin>>变量”语句
因此,您必须执行以下操作:
a) 通过cin.clear()修理内流
b) 用cin.ignore(std::numeric_limits::max(),'\n')清除缓冲区
#包括
#包括
使用名称空间std;
int main(){
而(1){
int输入;
cout>输入;
if(cin.fail()){
char rd=cin.get();
库特