我编码一个程序,直接从用户输入读取数据,并想知道我怎么能读取所有数据,直到键盘上的ESC键被按下。 我只发现了这样的事情:
std::string line;
while (std::getline(std::cin, line))
{
std::cout << line << std::endl;
}
但需要添加一个可移植的方式(Linux / Windows的)来捕捉按下ESC键,然后打破while循环。 这该怎么做?
编辑:
我写了这一点,但仍然 - 即使我按下键盘上的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:
伙计们,这soulution没有工作过,它吃的第一个字符从我行!
#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;
}