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获取到了,说明缓存区中的数据会一直保留,除非清空缓存区。

posted @ 2022-03-16 00:27  cat_dog_pig  Views(73)  Comments(0Edit  收藏  举报