000
27.08.2007, 01:05 Uhr
~2chilled
Gast
|
Hi Leute,
wie im Betreff beschrieben geht es um den cin stream, bzw. um die getline Funktion. getline sollte mir ja nur eine Zeile einlesen, bzw. bis zum delimiter \n Das tut es aber in meinem Programmkontext überhaupt nicht, sondern es versucht bis ans Ende des string puffers zu lesen, ich versteh die Welt nicht mehr:
C++: |
void PinCodeInput::readInput() { std::string input; std::cout << "4 numbers: " << std::endl; getline(std::cin, input); int inputLength = input.length(); if (inputLength != 4) readInput(); for (int i = 0; i < inputLength; ++i) { if (!isdigit(input[i])) { readInput(); } this->in[i] = (int)input[i]; } }
|
Ich seh an meinem Code nichts ungewöhnliches, aber getline hört nicht auf lesen zu wollen, selbst wenn ich auf der Konsole explizit ein \n eintippe. In einem anderen Kontext funktioniert es wie gewohnt, deswegen poste ich den noch zusätzlich:
C++: |
timeval time_a, time_b; PinCodeInput *pci; PinCode *pc; pci = new PinCodeInput; pci->readInput(); pc = new PinCode(pci); gettimeofday(&time_a, 0); pc->crackCode(); gettimeofday(&time_b, 0); std::cout << std::endl << "Dauer: " << (double)(time_b.tv_usec - time_a.tv_usec)/1000000 << "s"; delete pci; delete pc;
|
Das Problem ist für das eigentliche Programm eigtl total uninteressant, da das Programm sowieso nur Testzwecken dient und es noch zig Alternativen zum einlesen gibt... Trotzdem will ich wissen wieso getline nicht so läuft wie es sollte, bin für jede Antwort dankbar!
chilled |