|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 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
复制代码 |
|