2016-10-05 2 views
-1

Par exemple, un utilisateur entre deux entrées au lieu d'une, comment puis-je le détecter et afficher un message d'erreur?En C++, comment vérifier s'il y a plus d'une entrée?

+4

Dépend de la méthode utilisée pour lire les entrées. –

+0

Et sur quelles entrées vous voulez dire. – Rakete1111

+0

Par exemple, je veux un mot (une chaîne) comme entrée. Cependant, l'utilisateur peut simplement entrer un mot, utiliser un espace, puis entrer un autre mot (deux entrées). Comment puis-je détecter le deuxième mot? J'ai seulement déclaré une chaîne pour le premier mot, il ne stocke pas le deuxième mot. – GoodJuan

Répondre

2

Un utilisateur entre deux entrées où?

Sur la ligne de commande? Vérifiez argc, qui correspond au nombre d'arguments transmis à l'application lors de l'appel.

int main(int argc, char** argv) { 
    // argc will always at least be 1, 
    // since the program name is always passed 
    if (argc > 3) 
    ... 
} 

Si vous parlez de vérifier l'entrée ailleurs pendant l'exécution, elle, comme les autres commentaires disent, dépend de la méthode que vous utilisez pour lire les entrées. Il est difficile de proposer une approche si nous ne le savons pas.

est ici une idée, en fonction de votre exemple que vous avez donné dans votre commentaire:

std::string str; 
// take everything from stdin up to the next newline 
std::getline(std::cin, str); 

Maintenant, vous avez la chaîne d'entrée entière. Vous pouvez diviser la chaîne par des espaces (de nombreux exemples de cette here on StackOverflow) et vérifier que vous avez seulement analysé un mot. Ceci est juste un exemple et n'est pas nécessairement optimal, mais il devrait vous orienter dans la bonne direction.

Vous pouvez également utiliser un istringstream et juste analyser le premier mot et rejeter le reste, une modification effectuée sur this StackOverflow example.