我在C ++控制台应用程序中制作了一个简单的Rock,Paper,Scissors游戏。到目前为止,游戏工作得很好..直到我尝试在文件中存储一个单词,在变量中,然后尝试在IF语句中使用该变量。
以下是我如何将文件存储在变量中。
string comp_selection;
char player_selection;
这是代码的一部分,我试图让它发挥作用。
cout << "Rock, Paper, or Scissors?";
cin >> player_selection;
if (comp_selection =='r' || comp_selection == 'R')
{
if (player_selection == 'r' || player_selection == 'R')
{
cout << "Computer chose " << comp_selection << "... It's a draw!" << std::endl;
}
else if (player_selection == 'p' || player_selection == 'P')
{
cout << "Computer chose " << comp_selection << "... You win!" << std::endl;
}
else if (player_selection == 's' || player_selection == 'S')
{
cout << "Computer chose " << comp_selection << "... You lose!" << std::endl;
}
}
输出应为:
电脑选择摇滚......你赢了!
如果玩家选择Paper,例如。 相反,我收到此错误消息
严重级代码描述项目文件行抑制状态 错误C2678二进制&#39; ==&#39;:未找到哪个运算符采用类型&#39; std :: string&#39;的左手操作数(或者没有可接受的转换)
任何帮助或指导都会很棒!提前谢谢了。
答案 0 :(得分:0)
您的comp_selection
被定义为std::string
,但您将其与char
('r'
等)进行比较。您应该将其与另一个字符串("r"
)进行比较,或者只是将comp_selection
重新定义为一个字符:
char comp_selection;
char player_selection;
在C ++中,单个字符用单引号('c'
)表示,而字符串用双引号("full string"
)表示。
答案 1 :(得分:0)
到目前为止,您一直在享受yo jhipster
重载,意识到它正在写入cin >>
。从文件中读取时,您显然使用了一个字符串。这很好,除了现在编译器抱怨它不知道如何比较char
和string
。简而言之,您的类型不匹配。
答案 2 :(得分:0)
您只能比较comp_selection的第一个字符(comp_selection [0])
if (comp_selection[0] =='r' || comp_selection[0] == 'R')
{
这不是最佳解决方案,但需要最少的代码更改......
答案 3 :(得分:-1)
我刚刚意识到我的代码完成了它的目的!通过设置我的
comp_selection
到char
,就像此处建议的人一样,我可以使用IF语句手动输入计算机选择的内容。
例如:
if (comp_selection == 's' || comp_selection == 'S')
{
if (player_selection == 'r' || player_selection == 'R')
{
cout << "Computer chose Scissors... You win!" << std::endl;
}
else if (player_selection == 'p' || player_selection == 'P')
{
cout << "Computer chose Scissors... You lose!" << std::endl;
}
else if (player_selection == 's' || player_selection == 'S')
{
cout << "Computer chose Scissors... It's a draw!" << std::endl;
}
}