2017-05-21 6 views
-4

C++では、スイッチのケースで他のデータ型を扱う方法は?
同様のケースはint型とユーザー入力char型です。のC++では、スイッチのケースで他のデータ型を扱う方法は?

Screenshot 1

int play(Player &Player1, Player &Player2) 
{ 
    int answer = 0, guess = 0; 
    srand(22); 
    answer = rand() %100; 
    bool win = false; 

    while (!win) 
    { 
    cout<< "Player1s' turn to guess " <<end1; 
    guess = Player1.getGuess(); 
    win = checkForWin(guess, answer); 
    if (win) return 0; 
    cout<< "Player2's turn to guess " <<end1; 
    guess = Player2.getGuess(); 
    win = checkForWin(guess, answer); 
    } 
} 

int main() 
{ 
    system("COLOR 1E"); 

     Humanplayer Player1,Player2; 
     play(Player1, Player2); 

     system("pause"); 
     getch(); 
} 

Screenshot 2

**left window** 
:start 
{ 
    cout<<"Select Options \n"; 
    cout<<" 1 for Human vs Human\n 2 for Human vs Computer\n 3 for Computer vs Computer 
    cin>>opt; 

    switch(opt) 
    { 

    case 1: 
     play(Player1, Player2); 
     break; 
    case 2: 
     play(Player1, Comp1); 
     break; 
    case 3: 
     play(Comp1, Comp2); 
     break; 
    default: 
     cout<<" Invalid entry!!!\n Please enter 1,2 or 3!!!\n"; 
     goto start; 
    } 
} 

**right window** 
Select Options 
1 for Human vs Human 
2 for Human vs Computer 
3 for Computer vs Computer 
h 

intは、私がスイッチでこれを処理する方法がわからない場合は、ユーザーの代わりに文字を入力した場合。

+7

コードをテキストとして送信してください。誰もそれをコンパイルするために再入力しません。 –

+0

私は今コードを投稿する方法はありません、私はここに新しい....あなたが助けることができますか? –

+0

[こちら](http://stackoverflow.com/questions/16388510/evaluate-a-string-with-a-switch-in-c/16388610#16388610)を試してください。もちろんC++ 11を使用しています。 –

答えて

1

switch文は整数(および暗黙的に整数に変換可能な型)で動作します。たとえば、stringまたは他のタイプの場合は、switchを使用しないでください。

+0

宣言されている場合はcharデータ型でも動作しますが、私は正しいですか? –

+0

@AdeelRafaqat 'char'は整数型です – UnholySheep

+0

@UnholySheep大丈夫ですが、どのようなデータ型で非整数型と考えることができますか? –

0

C++のみ切り替え整数を扱う

条件 - 整数または列挙タイプの任意の式、またはクラス型の>整数または列挙型に文脈的に暗黙的に変換、またはA>単一の非宣言brace-or-equals>イニシャライザを持つこのような型の-array変数。

データは、int型かint型にキャストする必要があります。文字のためには、その数値を取得するには、単一引用符を使用することができます

switch(opt) 
{ 
case 'A' : // do something for A 
     break;  
case 'B' : // do something for B 
     break; 
default : break; //neither A or B were assigned to userInput 
...etc 
} 
+0

OK、私の答えが得られました –

0

私はこの質問は全くなく、cinからの不正な入力の取り扱いについてswitch文ではないと思います。ユーザーがintではない値を入力した場合、スイッチでそれを処理しようとしません。あなたはそれを検出し、おそらくエラーメッセージを出して、彼らにもう一度やり直してもらうか、終了させたいと思っています

これを試してください。

#include <iostream> 
using namespace std; 

int main() 
{ 
    int i = 0; 
    cout << "enter a number: "; 

    /* Test the truthiness of cin after the text entry 
     if the user didnt enter an int value the test 
     will return false. 
    */ 
    if(! (cin >> i)) 
    { 
     cout << "didnt enter a number\n"; 
     return 0; 
    } 

    /* now use knowing value must be int */ 

    switch(i) 
    { 
     case 1: 
      cout << "one\n"; 
      break; 

     // more number cases 

     default: 
      cout << "some other num\n"; 
      break; 
    } 
} 

別の関連する回答here

+0

、それはたくさんの親愛なる:) –

+0

@AdeelRafaqatあなたがあなたの答えを持っていれば、それを受け入れるために緑色の矢印とupvoteをクリックすることができます。 –

+0

緑色の矢印が表示されません –

関連する問題