日志7
如遇到while(1)停不下来,可使用以下方法:
if(!(cin>>t)) { if(cin.eof()) { break; } }
这段代码的意思是尝试从输入流中读取一个值到变量t。如果成功,cin>>t会返回cin对象,它在布尔上下文中被视为true。否则,如果读取失败(例如,因为输入流已经到达了末尾,或者输入的值不能转换为double类型),cin>>t会返回false。
if(!(cin>>t))这行代码就是在检查是否成功地从输入流中读取了一个值。如果没有成功(也就是cin>>t返回了false),那么就会执行花括号中的代码。
cin.eof()是一个函数,用来检查输入流是否已经到达了末尾。如果已经到达末尾,那么cin.eof()会返回true,否则返回false。
所以,if(cin.eof())这行代码就是在检查输入流是否已经到达了末尾。如果已经到达末尾,那么就执行break;语句,跳出循环。
总的来说,这段代码的意思是:尝试从输入流中读取一个值到t,如果读取失败并且输入流已经到达末尾,那么就跳出循环。