2017-04-20 1458 views
2

我有一个程序,我允许用户输入一个命令和坐标。示例GO 1 2。我想抛出一个异常,当用户只输入一个坐标,并没有指定另一个。示例GO 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()' –

相关问题