C++按键:getch、cin.get?

发布于 2024-11-29 00:17:06 字数 364 浏览 1 评论 0原文

我有一个循环运行的 Win32 程序。我希望能够在等待按键时暂停该程序。我使用“任意键”还是特定键并不重要,但我需要让程序冻结,直到我按下某个键。

我想知道我应该使用哪个命令。我正在使用 Visual C++,编译器无法识别以下任何命令:

cin.get()

std::cin.get()

getch()

我对 C++ 比较陌生。据我所知,在控制台应用程序中这是一个相当简单的操作(cin.get),但在 Win32 中可能会更困难。任何简单的解决方案或解决方法将不胜感激。该程序是定制用于单个科学实验的,所以现在如果解决方案有点糟糕(!),我不会大惊小怪(!)

如果我错过了问题中的任何重要信息,我深表歉意。

I have a Win32 program that runs on a loop. I would like to be able to pause that program while awaiting a keypress. It doesn't matter whether I use 'any key' or a specific key, but I need to have the program freeze until I press something.

I am wondering which command I should use. I am working with Visual C++ and the compiler doesn't recognise any of the following commands:

cin.get()

std::cin.get()

getch()

I am relatively new to C++. I understand that in a console app this is a fairly simple action to take (cin.get), but that it can be more difficult in Win32. Any simple solution or workaround would be appreciated. The program is bespoke to be used in a single scientific experiment, so for now I'm not fussed if the solution is a little botchy(!)

Apologies if I've missed any important info from my question.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

千紇 2024-12-06 00:17:06

你不应该使用任何一个。

您应该使用

#include <iostream>
...
int main()
{
   ... 
   std::cin.ignore(); //why read something if you need to ignore it? :)
}'

这里是文档

You should use neither.

You should use

#include <iostream>
...
int main()
{
   ... 
   std::cin.ignore(); //why read something if you need to ignore it? :)
}'

Here's the documentation

最笨的告白 2024-12-06 00:17:06

示例:

#include <iostream>
#include <conio.h>

int main()
{
  std::cout << "Press any key to continue . . ." << std::endl;
  _getch(); // wait for keypress
}

_getch() 是 C++ 等价于 C getch()

Example:

#include <iostream>
#include <conio.h>

int main()
{
  std::cout << "Press any key to continue . . ." << std::endl;
  _getch(); // wait for keypress
}

_getch() is C++ equivalent to C getch()

只是偏爱你 2024-12-06 00:17:06

尝试

#include <iostream>

using namespace std;

char temp;
cin >> temp;

Try

#include <iostream>

using namespace std;

char temp;
cin >> temp;
好菇凉咱不稀罕他 2024-12-06 00:17:06

假设您正在寻找 getch 的替代品(它不会回显到屏幕)。

如果您使用的是 Windows 和 Visual Studio,准确地说,请尝试使用 _getch。
这是它的链接
http://msdn.microsoft.com/en-我们/library/078sfkak(v=VS.100).aspx

Assuming that you are looking for an alternative for getch ( which does not echo to screen).

If you are using windows and visual studio to be precise try using _getch.
Here is a link to it
http://msdn.microsoft.com/en-us/library/078sfkak(v=VS.100).aspx

迷路的信 2024-12-06 00:17:06

你应该#include并使用std::cin.get();

我认为getch()是一个C函数,但由于您使用的是 C++,那么 cin 会更合适。

You should #include <iostream> and use std::cin.get();

I think the getch() is a C function, but since you are using C++, then the cin would be more appropriate.

花开浅夏 2024-12-06 00:17:06
HWND hwnd = ::GetConsoleWindow();

while (!((::GetForegroundWindow() == hwnd) &&
        ((::GetKeyState(VK_SPACE) & 0x8000) != 0)))
    ::Sleep(0);

假设这不是最好的方法,但它解决了我的问题。
将 VK_SPACE 替换为您喜欢的任何其他值。
而且它不便于携带。

HWND hwnd = ::GetConsoleWindow();

while (!((::GetForegroundWindow() == hwnd) &&
        ((::GetKeyState(VK_SPACE) & 0x8000) != 0)))
    ::Sleep(0);

Suppose it is not the best way but it solved my problem.
Replace VK_SPACE with any other value you like.
And it is not portable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文