捕获输入流中的错误

程序经常会提供从标准输入流中输入的操作,但是如果其中发生错误,则有可能导致后续的读取失败。

程序中应该判断输入流的状态,并在错误发生时,清除缓冲区,重置状态。

 

C的解决方式:

while(1) { int i; if (scanf("%d",&i)) { printf("ok:%d/n",i); if (666 == i) break; }else { printf("invalid input!/n"); rewind(stdin); } }  

C++的解决方式:

while(1) { int i; cin >> i; if ( !cin ) { cout<<"invalid input!"<<endl; //cin.clear(); cin.sync(); }else { cout<<"ok:"<<i<<endl; if (666 == i) break; } }  

你可能感兴趣的:(c,input)