while (! (cin >>ival).eof()){ // 输入 'a' 为什么无限循环???

using namespace std;

int main()
{

int ival;
while (! (cin >>ival).eof()){ // 输入 'a' 为什么无限循环???

    if (cin.fail()) { 
        cerr << "bad data, try again"<<endl; 
        //cin.clear();
        continue; 
    }

}

}



当输入流读取失败时,它会把字符放回原处,等待下次读取
所以要加上clear