2017-10-16 8 views
0

私はC++コンソールアプリケーションでシンプルなロック、ペーパー、はさみゲームを作っています。これまでのゲームは、ファイル内の単語を変数の中に格納し、その変数を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; 
    } 
} 

出力は次のようになります。

コンピュータがロックを選んだ...あなたが勝ちます!

プレーヤがたとえばPaperを選択した場合。 は、代わりに、私はこのエラーメッセージを取得

重大度コード説明プロジェクトファイルの行の抑制状態 エラーC2678バイナリ「==」:なしオペレータはタイプの「のstd :: string」の左側のオペランドをとる見つかりません(または許容される変換はありません)

助けや指導があれば助かります!事前に多くの感謝。

+0

は、エラーを参照してください!! 'std :: string'型の左辺オペランドをとる演算子は見つかりませんでした。charとstd :: stringとを比較しています。 –

答えて

0

comp_selectionstd::stringと定義されていますが、char'r'など)と比較しています。あなたが別の文字列("r")に対してそれを比較したり、単に文字であることをcomp_selectionを再定義する必要があります:C++で

char comp_selection; 
char player_selection; 

文字の文字列は二重引用符で示されているのに対し、単一の文字は、単一引用符('c')で表されます("full string")。

+0

このメソッドはうまく動作しますが、charメソッドでメッセージを出力すると、出力は文字列全体ではなく文字列の最初の文字を読み取るだけです。私は全体の文字列を出力したいと思います。 – jlw8

0

これまでのところ、あなたはcharに書いていることを認識して、cin >>オーバーロードを楽しんでいました。ファイルから読み込むときは、明らかに文字列を使用しています。コンパイラはstringcharを比較する方法がわからないことを除いて、これは問題ありません。つまり、あなたのタイプは一致しません。

0

あなたはcomp_selectionの最初の文字だけを比較することができます(comp_selectionを[0])

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

それは最善の解決策ではありませんが、それは最小限のコードの変更を必要とする...

-1

私は気付きました私のコードはそれが意図していたことをしています! comp_selectioncharをここに示すように設定することで、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; 
    } 
} 
関連する問題