使用while(cin>>str)进行输入的时候,系统是如何判断输入流的结束的?搜索一番之后,大多数的答案都说系统不会读取ctrl+z,但那个白框框是什么?window读取缓冲区数据的时候,应该是一边读取一边检测的吧?还有下面这个为什么第二个无法输入?读取完缓冲区的数据,为什么那些数据还在?endl不是会刷新缓冲区吗?
由于cin是遇到错误跳出的while循环,所以不用cin.clear()刷新状态位也是没办法重新进入输入的。你第二个程序会输出原来输入的字母,不是因为数据还在流里面,而是因为运行完第一个while,输入数据被保存在了全局对象p2中,同时由于没有重置状态,程序直接跳过了第二个while循环,直接输出了p2的内容 解决办法:两个while循环...