首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否使用kbhit()暂停终端输出?

是否使用kbhit()暂停终端输出?
EN

Stack Overflow用户
提问于 2010-09-30 07:04:09
回答 2查看 846关注 0票数 1

今天我在uni参加了我的第一个“编程基础”实验室课程。不过,有一件事让我感到奇怪:使用conio.h中的while(! _kbhit()) (我确信它是一个C单元?)“暂停”控制台输出。

这是最好的方法吗?使用时需要注意什么?我的导师是不是完全疯了?我之所以这样问,是因为它看起来像是一个肮脏的技巧,而且我以前从未在我看过的任何C++代码片段中看到过它。

将问题标记为家庭作业,因为它与学校相关,但实际上不是家庭作业。如果这个问题作为CW更好,请让我知道。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-30 07:29:03

一种非常快捷(且易于记忆)的方法是使用getchar

代码语言:javascript
复制
getchar();

根据stdin的缓冲模式,你可能需要在输入字符后按Return键,你可能可以使用setvbuf来解决这个问题,但我个人总是按Return键。

您也可以使用C++ iostreams。在这种情况下,您需要在某个地方调用它:

代码语言:javascript
复制
std::ios::sync_with_stdio(true);
票数 2
EN

Stack Overflow用户

发布于 2010-09-30 07:16:06

使用conio.h (或者更糟,使用system调用pause或类似的实用程序)通常不是一个好主意;它的可移植性不是很好。相反,您可以使用cin的功能

代码语言:javascript
复制
#include <iostream>
#include <limits>

/* Either of these would work, AFAIK */
void pause() {
    std::cin.ignore(std::numeric_limits<std::streamsize>::max());
    std::cin.get();
}

void pause() {
    std::cin.ignore(std::cin.rdbuf()->in_avail());
    std::cin.get();
}

void pause() {
    std::cin.sync();
    std::cin.get();
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3826524

复制
相关文章

相似问题

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