首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用std::cin清除TTY设置为原始模式的输入缓冲区?

如何使用std::cin清除TTY设置为原始模式的输入缓冲区?
EN

Stack Overflow用户
提问于 2014-11-25 22:44:11
回答 1查看 399关注 0票数 0

因此,我使用termios库将终端置于原始模式,这允许我这样做:

代码语言:javascript
复制
int getch() {
  int ch;
  do {
    ch = cin.get();
  } while(cin.eof());
  return ch;
}

这将等待输入缓冲区中的单个字符就绪并返回它。

但如果我想这么做

代码语言:javascript
复制
void clear_input_buffer() {
  char ch;
  while(!cin.fail()) {
    cin.get(ch);
  }
}

它进入了一个无休止的循环。

清除输入缓冲区的适当方法是什么?我试过这个:

代码语言:javascript
复制
cin.clear();
cin.ignore(INT_MAX);

但它也挂着。我还想只使用iostreams或标准posix函数来完成这个任务。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-26 00:23:33

就像往常一样:

代码语言:javascript
复制
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27138192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档