skyddy 发表于 2020-6-1 13:07:49

c++清理缓冲区问题

本帖最后由 skyddy 于 2020-6-2 09:54 编辑

如下代码 cin.rdbuf()->in_avail() 一直获取为0 导致无法正确清理缓冲区
请问 c++ 中清除缓冲区 用什么方法呢 或者我这个方式有什么问题吗
还有就是为啥一直返回0,导致清理缓冲区失败 下次直接读取了剩余缓冲区中的内容
以下代码 在linux 上的gcc 和 windows上的mingw环境中都做过测试一直返回0
#include <iostream>
#include <string>

using namespace std;

int main(int argc, char *argv[]) {

    cout << "请输入一段字符:";
    string str="";
    cin >> str; // 这种输入方式遇到空格就终止了
    cout << str << endl;
    // 获取缓冲区中可读取的字符数量
    int len = cin.rdbuf()->in_avail();   // 不知道为什么这里一直返回0
   cout << "缓冲区剩余长度:" << len << endl;
    cin.ignore(len, '\n');
    cout << "再次输入一段字符:";
    // 读入一行
    getline(cin, str);
    cout << str << endl;

    return 0;
}

测试输入结果
请输入一段字符:hello skyddy
hello
缓冲区剩余长度:0
再次输入一段字符: skyddy

skyddy 发表于 2020-6-1 13:10:38

大佬们 欢迎你们的解惑 {:10_254:}

skyddy 发表于 2020-6-1 21:28:51

捞一捞 没人吗 就就孩子吧
页: [1]
查看完整版本: c++清理缓冲区问题