2016-06-05 28 views
3

Ich wurde gebeten, eine Stunde und eine Minute in derselben Zeile einzugeben. Aber wenn ich die Stunde betrete, geht es automatisch auf eine neue Zeile, und ich kann nur die Minute in der nächsten Zeile eingeben. Ich möchte jedoch die Stunde und Minute in derselben Zeile mit einem Doppelpunkt zwischen ihnen eingeben. Es sollte so aussehenWie alle Eingänge auf der gleichen Leitung haben C++

Time: 4:54 

Aber mein Code erzeugt dies:

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

Der Postcode sieht gut aus für mich. Bitte senden Sie ein Beispiel [Minimal, vollständig und überprüfbar] (http://stackoverflow.com/help/mcve) mit Beispieleingabe. –

Antwort

2

Sie können das tun, wie die folgenden:

cin >> timeHours >> timeMinutes; 

nach dem documentation:

der Benutzer zwei Werte einzuführen, ist zu erwarten, eine für Variable a, und eine andere für die Variable b. Jede Art von Leerzeichen wird verwendet, um zwei aufeinanderfolgende Eingabeoperationen zu trennen; Dies kann entweder ein Leerzeichen sein, ein Tab oder ein Zeilenumbruchzeichen.

2

Das Verhalten hängt von der vom Benutzer bereitgestellten Eingabe ab.

Ihr Code funktioniert, wie Sie wollen, wenn der Benutzer alles geben würde (zB 14:53) auf der gleichen Zeile und drücken Sie die Eingabetaste erst am Ende:

Demo 1

Jetzt können Sie eine bessere Kontrolle haben, wenn Sie einen String lesen und dann ihren Inhalt interpretieren, zum Beispiel wie hier:

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; 
}