C++ keypress: getch, cin.get?
C++ keypress: getch, cin.get?
我有一个在循环中运行的Win32程序。我希望能够在等待按键时暂停该程序。我使用"任意键"还是特定键并不重要,但我需要在按下某个键之前冻结程序。
我不知道该用哪个命令。我使用的是Visual C++,编译器无法识别以下任何命令:
cin.get()
std::cin.get()
getch()
我对C++还比较陌生。我知道在控制台应用程序中,这是一个相当简单的操作(cin.get(,但在Win32中可能会更困难。任何简单的解决方案或变通方法都将不胜感激。该程序是为在单个科学实验中使用而定制的,所以目前我并不担心解决方案是否有点糟糕(!(
如果我的问题遗漏了任何重要信息,我深表歉意。
两者都不应该使用。
你应该使用
#include <iostream>
...
int main()
{
...
std::cin.ignore(); //why read something if you need to ignore it? :)
}'
这是文档
示例:
#include <iostream>
#include <conio.h>
int main()
{
std::cout << "Press any key to continue . . ." << std::endl;
_getch(); // wait for keypress
}
_getch()
是C++等价于C getch()
尝试
#include <iostream>
using namespace std;
char temp;
cin >> temp;
假设您正在为getch寻找一个替代方案(它不会回显到屏幕(。
如果您使用的是windows和visualstudio,请尝试使用_getch。这是它的链接http://msdn.microsoft.com/en-us/library/078sfkak(v=VS.100(.aspx
您应该使用#include <iostream>
和std::cin.get();
我认为getch()
是一个C函数,但由于您使用的是C++,那么cin
会更合适。
HWND hwnd = ::GetConsoleWindow();
while (!((::GetForegroundWindow() == hwnd) &&
((::GetKeyState(VK_SPACE) & 0x8000) != 0)))
::Sleep(0);
假设这不是最好的方法,但它解决了我的问题。将VK_SPACE替换为您喜欢的任何其他值。而且它是不可移植的。
相关文章:
- 为什么无论你输入什么,这"while(cin.get(str,3))"只运行一次?
- 使用 cin.get() 初始化字符数组
- 编写 cin.get() 以接收字符数组时出现问题
- 使用 cin.get 读取字符数组
- cin.get()的返回类型
- 在循环中使用 cin.get() 输入字符串
- 为什么 cin.get(char, int) 不会溢出?
- cin.get() 导致"no instance of overloaded function"错误
- 为什么当我输入字符时,这个特定的 cin.get() 语句在C++中不起作用?
- 为什么程序在 cin 之后跳过 cin.get()?
- 如何终止 std::cin.get() 的 ''
- 使用 cin.get() 读取字符
- 无法让我了解 cin.get 和 cout 在这里的工作方式
- cin.get()函数在C 中
- 如何在 c++ 中使用 cin.get() 给出更多数字?
- (m = cin.get())!=EOF&m = cin.get()!=EOF 之间的差异
- 为什么我的应用程序即使我的应用程序也关闭,即使我有cin.get();
- C 使用CIN.Get()暂停此程序
- cin.get() 之后的回车;C++
- 我是否缺少 cin.get() 的东西