cin当没有声明数组变量的时候,输入一串字符时候只读取第一个啊解决方案
cin当没有声明数组变量的时候,输入一串字符时候只读取第一个啊?
我想只能使用单个数字来进行判断,大概程序如下:
cout < < "请输入选择: ";
char key= ' ';
loop1: cin> > key;
switch(key)
{case '0 ': Sort();break;
case '1 ': Add();break;
default: { cout < < "输入错误!请重新选择: "; cin.clear(); // cin.sync(); cin.ignore(10000, '\n ');
goto loop1; }
输入1时没错,可是我输入1a时程序也进入Add()了,怎么办啊?我想了好久都没法解决啊。
------解决方案--------------------
cin> > key每次都读出一个字符的,所以1a的时候第一次key的内容是1
------解决方案--------------------
char key[2] = {0};
loop1:
cin> > key;
if (key[1] != 0)
{
cout < < "输入错误!请重新选择: ";
cin.clear();
goto loop1;
}
switch(*key)
{
case '0 ':
Sort();
break;
case '1 ':
Add();
break;
default: {
cout < < "输入错误!请重新选择: ";
cin.clear();
goto loop1;
}
}
我想只能使用单个数字来进行判断,大概程序如下:
cout < < "请输入选择: ";
char key= ' ';
loop1: cin> > key;
switch(key)
{case '0 ': Sort();break;
case '1 ': Add();break;
default: { cout < < "输入错误!请重新选择: "; cin.clear(); // cin.sync(); cin.ignore(10000, '\n ');
goto loop1; }
输入1时没错,可是我输入1a时程序也进入Add()了,怎么办啊?我想了好久都没法解决啊。
------解决方案--------------------
cin> > key每次都读出一个字符的,所以1a的时候第一次key的内容是1
------解决方案--------------------
char key[2] = {0};
loop1:
cin> > key;
if (key[1] != 0)
{
cout < < "输入错误!请重新选择: ";
cin.clear();
goto loop1;
}
switch(*key)
{
case '0 ':
Sort();
break;
case '1 ':
Add();
break;
default: {
cout < < "输入错误!请重新选择: ";
cin.clear();
goto loop1;
}
}