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;
}
最善の策は、WindowsおよびLinux用の#IFDEFを使用して適切なGetAsyncKeyState()または同等のものを選択するカスタムの「GetAsyncKeyState」関数を作成することです。
望ましい結果を達成するための他の方法は存在しません。cinアプローチには問題があります。たとえば、アプリケーションに焦点を合わせる必要があります。
#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;
}
char c;
while (cin >> c) {
...
}
ctrl-D
上記のループを終了します。文字が入力されている限り継続します。
//最も単純です。
#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;
}