1。下面的程序,我想实现这样的功能:输入合法的数字即可退出,输入错误则重新输入。
#include <iostream>
using namespace std;
int main()
{ int a;
while(!(cin>>a))
{cout<<"Error!Input again!"<<endl;}
return 0;
}
若输入的是数字,程序能退出。可是当输入字符的时候,就会不断地输出Error!Input again!
进入了死循环。请问为什么会这样。要怎么才能解决。
加了continue语句仍然是那样
其实是这样的,我本来的程序是要根据用户输入的选项来进行调用某些函数的,选择只有1.2.3.4这样。我想。如果用户输入了字母或其他的字符,那么程序就不能正常运行了。所以,如果用户输入了字符的话,则重新输入数据
3楼的,其实我是想输入错误就提出,并不退出
4楼的,你的结果可以用,可是我想知道的使为什么我原来的用法不行。这才是最重要的.
5楼的方案也行,不过我正的想知道为什么原来我的那个不行(补基础)。
int num_input;
cin >> num_input;
while(cin.fail())
{
cin.clear();
cin.ignore();
cout << "输入错误,请重新输入"<<endl;
cin >> num_input;
}
扩展资料
cin 函数用法:cin.get()
char ch;
ch=cin.get();//cin.get(ch) 可接收字符,不管输入多少,但只能接受第一个
cout << ch << endl;
getchar() //接收一个字符,要包含#include <string>
char ch;
ch=getchar();//括号里面无参数cin.get(ch);
cout<<ch;
cin.get(字符数组名,接收字符数目): 用来接收一行字符串,可接收空格
char a[5];
cin.get(a,5);
cout<<a<<endl; //输出4个字符+1个'\0'
cin.getline() 接收一个字符串,可接收空格并输出
char a[20];
cin.getline(a,5);//cin.get(a,5);但是没有结束符号
cout<<a<<endl; //接收5个字符到a中,最后一个是'\0',所以只看到4个字符输出。
cin>>a;键盘读入数据赋值给a;
cin:C++编程语言互换流中的标准输入流,需要iostream.h支持,程序的输入都建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。
//例如: