cin和缓存区问题
稍微记录一下今天刷题遇到的C++问题
看到使用while(cin >> s);来读取最后一个字符串。百度了一下发现cin以空格,制表符和回车为终止依据。也就是说我输入"abc 123 bca 321"+回车,当读到“abc ”时赋值abc给s。直到遇见'\0'也就是EOF,跳出循环。如此我们知道cin>>s返回值其实就是读到的每一个字符,一旦遇到EOF就返回0,其他都是非零。
缓存区问题
当敲下回车后,键盘输入的内容被送到缓存区,如果有以下代码:
#include <iostream> #include <string> using namespace std; int main() { std::string str,str2; std::cin >> str; std::cout << str; int a = 3, b = 4; cout << a + b << endl; std::cin >> str2; std::cout << str2; return 0; }
当我们输入"abc 123"+回车后
输出是abc 7 123,发现123仍然被str2获取到了,说明缓存区中的数据会一直保留,除非清空缓存区。