好的,我这里有问题。我正在制作幻灯片益智游戏。玩家被问到他想移动哪一 block ,直到拼图被解决。如果玩家之前想退出,输入Q
或q
然后按enter
即可。该程序运行良好。但是我遇到了一个问题:如果我插入 CTRL+Z
,程序将意外地循环
...
这是一段重要的代码:
// analyzes user input
if (piece_to_move_string == "q" ||
piece_to_move_string == "Q")
{
cout << endl << "You chose to quit." << endl;
pressanykey();
break;
}
else
{
piece_to_move = atoi(piece_to_move_string.c_str());
if (1 <= piece_to_move && piece_to_move <= pow(puzzle_size,puzzle_size))
{
game_board = move_piece (game_board, piece_to_move);
}
else
{
cout << "Not possible.";
}
}
编辑:但仍然不起作用..
// analyzes user input
if (piece_to_move_string == "q" ||
piece_to_move_string == "Q")
{
cout << endl << "You chose to quit." << endl;
pressanykey();
break;
}
else if (cin.eof())
{
//do nothing
}
else
{
piece_to_move = atoi(piece_to_move_string.c_str());
if (1 <= piece_to_move && piece_to_move <= pow(puzzle_size,puzzle_size))
{
game_board = move_piece (game_board, piece_to_move);
}
else
{
cout << "Not possible.";
}
}
最佳答案
Ctrl+Z 表示“文件结尾”(假设您使用的是 Windows),所以一旦用户点击它,您的 cin
就处于不可读状态。检查 cin.eof()
:
if (cin.eof() || piece_to_move_string == "q" ||
piece_to_move_string == "Q")
{
cout << endl << "You chose to quit." << endl;
}
关于c++ - C++ CTRL+Z 使程序无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15579257/