读书人

选择菜单有关问题

发布时间: 2012-02-08 19:52:21 作者: rapoo

选择菜单问题
C++初学者,希望大家多多指教!
做了一个简单的菜单,但是如果输入第一个选择后(不回车),加一个空格,再随便输入字符或者数字的时候就会跳到下一步去了!怎样才能避免这种情况呢???
如下:
int main()
{

cout < < " 1, ..... " < < endl;
cout < < " 2, ..... " < < endl;
cout < < " 3, ..... " < < endl;

//省略号代表要执行的功能。
//然后我定义一个字符数组来存储选择的值,

cout < < "Enter option: ";
char option[32];
cin > > option;

//再用一个strcmp函数来判断

if (strcmp(option, "1 ") == 0)
{
......; //执行语句
}

......

}

这样虽然能够避免输入多个字符或者数字,
但是加了一个空格后就与原来的愿望背道而驰了......

怎么做才能避免加了空格也能判断呢???




[解决办法]
当然是优先考虑
int option;
cin > > option;
如果一定要char option[32];当然是先去掉空格。
另外,应该用stirng option;取代那个char数组。
[解决办法]
bool cinInt(int &num)
{
cin> > num;
char pk;
if(cin.rdstate()==ios_base::goodbit&&(cin.eof()||(pk=cin.peek())== '\r '||cin.putback(pk),cin.peek()== '\n '))
{
cin.sync();
return true;
}
else
{
cout < < "输入格式有误,请重新输入!(请输入数字) " < <endl;
cin.clear();
cin.sync();
return false;
}
}
void main()
{
int a;
while(!cinInt(a)){}
cout < <a < <endl;
}

读书人网 >C++

热点推荐