web-dev-qa-db-ja.com

C ++キー押下:getch、cin.get?

ループで実行されるWin32プログラムがあります。キーを押している間、そのプログラムを一時停止できるようにしたいと思います。 「任意のキー」または特定のキーを使用するかどうかは関係ありませんが、何かを押すまでプログラムをフリーズさせる必要があります。

どのコマンドを使用すべきか疑問に思っています。 Visual C++を使用していますが、コンパイラは次のコマンドを認識しません。

cin.get()

std::cin.get()

getch()

私はC++に比較的慣れていません。コンソールアプリでは、これは実行するのはかなり単純なアクション(cin.get)ですが、Win32ではより困難になる可能性があることを理解しています。簡単な解決策または回避策をいただければ幸いです。このプログラムは、単一の科学実験で使用されるように作られているため、今のところ、解決策が少しおかしくても大騒ぎしません(!)

質問から重要な情報を見逃してしまった場合はおApび申し上げます。

26
CaptainProg

どちらも使用しないでください。

あなたが使用する必要があります

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

ドキュメントはこちら

69
Armen Tsirunyan

例:

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

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

_getch()は、C getch()と同等のC++です。

4
Daniel Blom

お試しください

#include <iostream>

using namespace std;

char temp;
cin >> temp;
3
Jason

Getchの代替手段(画面にエコーしない)を探していると仮定します。

正確にウィンドウとビジュアルスタジオを使用している場合は、_getchを使用してみてください。ここにリンクがあります http://msdn.Microsoft.com/en-us/library/078sfkak(v = VS.100).aspx

2
xeon111

_#include <iostream>_を使用し、std::cin.get();を使用する必要があります

getch()はC関数だと思いますが、C++を使用しているため、cinの方が適切です。

1
Tony The Lion