2016-06-05 1 views
3

On m'a demandé d'entrer une heure et une minute sur la même ligne. Mais quand j'entre dans l'heure, il va automatiquement à une nouvelle ligne, et je ne peux que saisir la minute sur la ligne suivante. Cependant, je veux entrer l'heure et la minute sur la même ligne avec un deux-points entre eux. Il devrait ressembler à ceciComment avoir toutes les entrées sur la même ligne C++

Time: 4:54 

Mais mon code produit ceci:

Time: 4 
cout << "\n\tTime: "; 
cin >> timeHours; 
cin.get(); 
cin >> timeMinutes; 
+0

Le code posté me semble bon. Veuillez poster un [exemple minimal, complet et vérifiable] (http://stackoverflow.com/help/mcve) avec un exemple d'entrée. –

Répondre

2

Vous pouvez le faire comme suit:

cin >> timeHours >> timeMinutes; 

selon l'documentation:

l'utilisateur devrait présenter deux valeurs, une pour variable a, et un autre pour la variable b. Tout type d'espace est utilisé pour séparer deux opérations d'entrée consécutives; cela peut être un espace, un onglet ou un caractère de nouvelle ligne.

2

Le comportement dépend de l'entrée fournie par l'utilisateur.

Votre code fonctionne comme vous voulez, si l'utilisateur entrerait tout (par exemple 14:53) sur la même ligne et appuyez sur Entrée uniquement à la fin:

Demo 1

Maintenant vous pouvez avoir un meilleur contrôle, si vous lisez une chaîne, puis interpréter son contenu, par exemple comme ici:

string t; 
cout << "\n\tTime: "; 
cin >> t; 
stringstream sst(t); 
int timeHours, timeMinutes; 
char c; 
sst>>timeHours>>c>>timeMinutes; 

Demo 2

1
#include <iostream> 
#include <string> 
#include <sstream> 

using namespace std; 

int main() { 
    string input; 
    char symbol; 
    int hour, min; 
    cout << "Time: "; 
    getline(cin, input); 
    stringstream(input) >> hour >> symbol >> min; 

    return 0; 
}