首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

选择菜单有关问题

2012-02-08 
选择菜单问题C++初学者,希望大家多多指教!做了一个简单的菜单,但是如果输入第一个选择后(不回车),加一个空

选择菜单问题
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;
}

热点排行