web-dev-qa-db-ja.com

C ++:キーが押されるまでwhileループを実行します。 ESC?

Whileループ内でキーが押されたことを確認するためにwindows.hを使用しないコードスニペットを持っている人はいますか。基本的にこのコードですが、windows.hを使用する必要はありません。 LinuxとWindowsで使いたいです。

#include <windows.h>
#include <iostream>

int main()
{
    bool exit = false;

    while(exit == false)
    {
        if (GetAsyncKeyState(VK_ESCAPE))
        {
            exit = true;
        }
        std::cout<<"press esc to exit! "<<std::endl;
    }

    std::cout<<"exited: "<<std::endl;

    return 0;
}
7
pandoragami

最善の策は、WindowsおよびLinux用の#IFDEFを使用して適切なGetAsyncKeyState()または同等のものを選択するカスタムの「GetAsyncKeyState」関数を作成することです。

望ましい結果を達成するための他の方法は存在しません。cinアプローチには問題があります。たとえば、アプリケーションに焦点を合わせる必要があります。

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

int main()
{
    char c;
    std::cout<<"press esc to exit! "<<std::endl;
    while(true)
    {
        c=getch();
        if (c==27)
          break;
    }

    std::cout<<"exited: "<<std::endl;

    return 0;
}
4
Nasir Mahmood
char c;
while (cin >> c) {
...
}

ctrl-D上記のループを終了します。文字が入力されている限り継続します。

2
gongzhitaao

//最も単純です。

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

using namespace std;
    int main()
    {

        char ch;
        bool loop=false;

      while(loop==false)
       {
        cout<<"press escape to end loop"<<endl;
        ch=getch();
        if(ch==27)
        loop=true;
       }
        cout<<"loop terminated"<<endl;
        return 0;
    }
0
AmmAr