我今天在大学学习了我的第一个“编程基础”实验课程。但有一件事让我感到奇怪:使用conio.h中的while(! _kbhit())
(我确定它是一个C单元?)来“暂停”控制台输出。
这是最好的方法吗?使用它时需要注意什么?我的导师绝对是疯子吗?我只是问,因为它看起来像是一个肮脏的黑客,我以前从未在我看过的任何C ++代码片段中看过它。
标记问题作为家庭作业,因为它与学校有关,但实际上并不是家庭作业。如果这个问题比CW更好,请告诉我。
答案 0 :(得分:2)
使用conio.h
(或者更糟糕的是,使用pause
调用system
或类似的实用程序)通常是一个坏主意;它不是很便携。相反,可以使用cin
:
#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();
}
答案 1 :(得分:2)
一种非常快速(且易于记忆)的方法是使用getchar
:
getchar();
根据stdin
的缓冲模式,您可能必须在输入字符后按Return键。您可以使用setvbuf
来解决这个问题,但我个人总是按回车。
您可能也在使用C ++ iostream。在这种情况下,你需要在某个地方调用它:
std::ios::sync_with_stdio(true);