2017-04-20 23 views
2

私は、ユーザーがコマンドと座標を入力できるようにするプログラムを持っています。例GO 1 2。ユーザーがある座標だけを入力し、もう一方の座標を指定しない場合、例外をスローしたいと思います。例GO 1ですが、プログラムは次のパラメータを入力するのを待ちます。私はそれを望んでいない、私はそれが1行にすべてを入力することをユーザーに許可したい。ここでC++でEnterキーを押した後にプログラムを続行するには?

は私のコードです:

cout << "Enter command: "; 
string command; 
int x, y; 
cin >> command >> newX >> newY; 
if(LegalCommand(command)){ 
    if(!cin){ 
     cin.clear(); 
     cin.ignore(1000, '\n'); 
     cout << "Command not valid!" << endl; 
    } 
} 
+4

'CIN >> command' – Ari0nhh

+1

@ Ari0nhh申し訳ありませんが、私はスペルミスを犯しましたが、それはcin >>コマンドとされていました。 – Gigaxel

答えて

3

文字列に読み込み、それをストリーム:

string line; 
getline(cin, line); 
istringstream in(line); 
in >> kom >> newX >> newY; 
+0

これは私が必要とするほとんどのものですが、最後のパラメータを入力しない場合、または別の値を入力してIntegerを入力すると、その場所に0が格納されます。しかし、0も私のコマンドの正当な値なので、ユーザが不正なコマンドを入力したかどうかを確認することはできません:/ – Gigaxel

+0

その後in.fail()をチェックすることができます –

関連する問題