vs2013吧 关注:6,180贴子:10,965
  • 1回复贴,共1

请问fflush(stdin)可以清除scanf的缓存 那cin用什么才能清除缓存

只看楼主收藏回复

如题:
int Menu()
{
int i=9;
system("cls");
puts("");
puts("\t\t\t\t 管理系统");
puts("\n\t\t\t* * * * * * * * * * * * * *");
puts("\t\t\t* 1、浏览信息 *");
puts("\t\t\t* 2、添加信息 *");
puts("\t\t\t* 3、查找信息 *");
puts("\t\t\t* 4、修改信息 *");
puts("\t\t\t* 4、删除信息 *");
puts("\t\t\t* 0、退出 *");
puts("\t\t\t* * * * * * * * * * * * * *");
cout<<"请输入:";
cin.sync;
cin >> i;
//fflush(stdin);
//scanf("%d", &i);
switch (i)
{
case 1:
Browse();
system("pause");
break;
case 2:
Input();
break;
case 3:
Find();
system("pause");
break;
case 4:
Modification();
break;
case 5:
Delete();
break;
default:
break;
}
return i;
}
上述代码中,如果不小心输错(如输成了字母)就会无限刷新屏幕 但是如果用fflush刷新了缓存在scanf输错成字母也没有关系,fflush对cin无效 请问,cin应该怎么刷新缓存啊 求指教 感激不尽


IP属地:广东1楼2016-08-14 13:13回复
    亲测百度了 cin.sync(); 也是无效的 难道没有什么好办法吗


    IP属地:广东2楼2016-08-14 13:16
    回复