2017-09-28 5 views
-1

Je lis des entiers dans "while" sur la console, comment arrêter de lire quand je tape une chaîne vide?fermer l'entrée de la console C++

while (cin >> index) 
{ 
    if (index >= v.size() || index < 0) 
    { 
     break; 
    } 
    n_v.push_back(v[index]); 


} 

I want it to break when an empty string is read

je serais reconnaissant, si quelqu'un m'a aidé.

+0

@ user0042 Pas vraiment, car l'entrée "vide" est un retour à la ligne, et le retour à la ligne est un espace, et les opérations d'entrée (non-caractère) sautent par défaut les espaces blancs, donc il va bloquer. –

+0

lire une chaîne au lieu d'un int et vérifier qu'il est vide – user463035818

Répondre

0

Il y a deux façons de résoudre votre problème: La première est tout simplement que l'utilisateur entre la fin de fichier combinaison de touches (généralement CTRL-Z dans Windows, et CTRL-D sous Linux ou Mac OS) .

L'autre consiste à lire l'entrée ligne par ligne en tant que chaînes et à vérifier si la ligne (dépouillée de tous les espaces) est vide. Si ce n'est pas le cas, essayez de convertir la chaîne en un nombre et continuez avec le code.