如何让我的代码检测到我按下回车键?我尝试使用cin.get()
但没有成功。此外,当按下回车键时,我想将布尔值x从true更改为false。
为什么这不起作用?
if (cin.get() == '\n'){
x = false;
}
当按下回车键时我想结束我的循环(以及程序)(参见下面的代码)
所有代码(简单的摇滚,纸张,剪刀游戏):
#include <iostream>
#include <string>
#include <cstdlib> //random
#include <time.h> //pc time
using namespace std;
int main()
{
string rpsYou;
string rpsCom;
string winner;
bool status = true;
while (status){
cout << "Welcome to Rock, Scissors, Paper!\nYou'll have to compete against the computer."
" Please enter 'Rock', 'Paper' or 'Scissors' here: ";
cin >> rpsYou;
//Random number
srand (time(NULL));
int randomNum = rand() % 4; // -> (rand()%(max-min))+min;
//Computers guess
if (randomNum ==1){
rpsCom = "Rock";
}
else if (randomNum ==2){
rpsCom = "Paper";
}
else {
rpsCom = "Scissors";
}
//First letter to capital
rpsYou[0] = toupper(rpsYou[0]);
if (rpsYou == "Rock" || rpsYou == "Paper" || rpsYou == "Scissors"){
cout << "You: " << rpsYou << "\nComputer: " << rpsCom << "\n";
}
else {
cout << "ERROR: Please enter 'Rock', 'Paper' or 'Scissors'.";
}
if ( (rpsYou == "Rock" && rpsCom == "Rock") ||
(rpsYou == "Paper" && rpsCom == "Paper") ||
(rpsYou == "Scissors" && rpsCom == "Scissors") ){
cout << "Tie :|";
}
else if( (rpsYou =="Rock" && rpsCom =="Scissors") ||
(rpsYou =="Paper" && rpsCom =="Rock") ||
(rpsYou =="Scissors" && rpsCom =="Paper")){
cout << "Congratulations! You won! :)";
}
else{
cout << "Oh no! You lost! :(";
}
}
return 0;
}
答案 0 :(得分:2)
你可以这样做:
cout << "Hit enter to stop: ";
getline(cin, rpsYou);
if (input == "") {
status=false;
}
这假设用户输入中没有任何内容,(即:用户只需按下回车键)
答案 1 :(得分:0)
听起来你正在考虑“实时”获取按键,例如在游戏中可能有用。但是cin
并不像那样。在标准C ++中无法“检测用户何时按下输入”!因此,当用户按下回车键时,您无法结束该程序。你可以做的是当用户输入空行时,或者当用户输入例如“退出”(或者其他任何东西,直到你)时结束程序,但每个用户输入必须以Enter键结束。
从cin
读取就像从文本文件中读取一样,除非每次用户按Enter键时此文本文件都会获得一个新行。因此,检测用户按Enter的最接近的是使用std::getline
:
std::string line
std::getline(std::cin, line);
这将从 stdin 中获取所有字符,直到换行符(或直到文件结尾),这通常意味着用户在控制台应用程序中使用了该键时输入。请注意,实际的行尾不会存储在字符串中,因此如果用户只需按Enter而不键入任何其他内容,line
将为空字符串。
在编辑后查看问题,您可以将cin >> rpsYou;
替换为getline(cin, rpsYou);
。您可能还想添加trimming您读取的字符串,以防用户输入例如类型的额外空格。
答案 2 :(得分:0)
您无法检测标准C ++中按下了哪个键。它取决于平台。这是一个类似的question,可能对您有帮助。