如何从文件中提取一个词并将其存储在一个变量中? C++

问题描述:

我在C++控制台应用程序中制作了一个简单的Rock,Paper,Scissors游戏。到目前为止,游戏效果很好..直到我试图从一个文件中存储一个单词,在一个变量中,然后尝试在IF语句中使用该变量。如何从文件中提取一个词并将其存储在一个变量中? C++


下面是我如何从文件中将我的单词存储在变量中。

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; 
    } 
} 

输出应该是:

电脑选择了摇滚......你赢了!

如果玩家选择纸张为例。 相反,我得到这个错误信息

严重性代码说明项目文件的线路抑制状态 错误C2678二进制“==”:没有操作员发现这需要类型的左侧操作数“的std :: string”(或没有可接受的转换)

任何帮助或指导,将是伟大的!提前谢谢了。

+0

看到错误!找不到操作符找到类型为“std :: string”的左手操作数。你正在比较字符与std :: string –

您的comp_selection定义为std::string,但您将其与char'r'等)进行比较。你应该把它比对另一个字符串("r"),或只是重新定义comp_selection是一个性格:

char comp_selection; 
char player_selection; 

在C++中,单个字符由单引号('c'),而字符的字符串用双引号表示表示("full string")。

+0

该方法很好,但是,当我输出消息,与char方法,输出只读取字符串的第一个字母,而不是整个字符串。我想要输出整个字符串。 – jlw8

到目前为止,您一直在享受cin >>重载承认它正在写入char。从文件中读取时,显然使用了一个字符串。这很好,除了现在编译器抱怨说它不知道如何比较stringchar。总之,你的类型不匹配。

可以比较comp_selection的只有第一个字符(comp_selection [0])

if (comp_selection[0] =='r' || comp_selection[0] == 'R') 
{ 

这是不是最好的解决方案,但它需要最少的代码改变...

我刚刚意识到我的代码完成了它打算做的事!通过将我的 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; 
    } 
}