ユーザー入力から直接データを読み取るプログラムをコーディングしていますが、キーボードの ESC ボタンが押されるまでどのようにすべてのデータを読み取ることができるのか疑問に思っていました。私はこのようなものだけを見つけました:
std::string line;
while (std::getline(std::cin, line))
{
std::cout << line << std::endl;
}
ただし、押された ESC ボタンをキャッチして while ループを中断するためのポータブルな方法 (Linux/Windows) を追加する必要があります。これを行う方法?
編集:
私はこれを書きましたが、それでも - キーボードの ESC ボタンを押しても動作します:
#include <iostream>
#include <string>
using namespace std;
int main()
{
const int ESC=27;
std::string line;
bool moveOn = true;
while (std::getline(std::cin, line) && moveOn)
{
std::cout << line << "\n";
for(unsigned int i = 0; i < line.length(); i++)
{
if(line.at(i) == ESC)
{
moveOn = false;
break;
}
}
}
return 0;
}
EDIT2:
みんな、この解決策も機能しません。私のラインの最初のイワナを食べてしまいます!
#include <iostream>
#include <string>
using namespace std;
int main()
{
const int ESC=27;
char c;
std::string line;
bool moveOn = true;
while (std::getline(std::cin, line) && moveOn)
{
std::cout << line << "\n";
c = cin.get();
if(c == ESC)
break;
}
return 0;
}