Question

Je me demandais comment utiliser cin pour que, si l'utilisateur n'entre aucune valeur et appuie simplement sur ENTER , ce cin reconnaîtra ceci comme entrée valide.

Était-ce utile?

La solution

Vous voudrez probablement essayer std :: getline :

#include <iostream>
#include <string>

std::string line;
std::getline( std::cin, line );
if( line.empty() ) ...

Autres conseils

Je trouve que pour l'entrée utilisateur std :: getline fonctionne très bien.

Vous pouvez l'utiliser pour lire une ligne et tout simplement supprimer ce qu'elle lit.

Le problème de faire des choses comme ça,

// Read a number:
std::cout << "Enter a number:";
std::cin >> my_double;

std::count << "Hit enter to continue:";
std::cin >> throwaway_char;
// Hmmmm, does this work?

est que si l'utilisateur entre d'autres déchets, par exemple. " 4,5 - à propos de " il est trop facile de se désynchroniser et de lire ce que l'utilisateur a écrit la dernière fois avant d'imprimer l'invite dont il a besoin pour la prochaine fois.

Si vous lisez chaque ligne complète avec std :: getline (std :: cin, a_string) , puis analysez la chaîne renvoyée (par exemple, en utilisant un istringstream ou une autre technique), il est beaucoup plus facile de conserver les invites imprimées sont synchronisées avec la lecture de std :: cin, même en cas de saisie déformée.

Le film getline résout-il votre problème?

Pour détecter l'utilisateur en appuyant sur la touche Entrée plutôt que d'entrer un entier:

char c;
int num;

cin.get(c);               // get a single character
if (c == 10) return 0;    // 10 = ascii linefeed (Enter Key) so exit
else cin.putback(c);      // else put the character back
cin >> num;               // get user input as expected

Alternativement:

char c;
int num;
c = cin.peek();           // read next character without extracting it
if (c == '\n') return 0;  // linefeed (Enter Key) so exit
cin >> num;               // get user input as expected

Essayez de déconfigurer Cin (il est mis en mémoire tampon par défaut).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top