Du hast vermutlich noch Zeichen im Eingabe-Puffer. Wenn du mit cin >> einliest wird alles bis zum ersten Leerzeichen verwendet - der Rest bleibt im Puffer (inkl dem "\n"). getline() liest aber bis zum ersten "\n" - du hast also nach dem ersten Einlesen noch was im Puffer, das beim ersten Schleifendurchlauf gelesen wird (da das nicht gleich "123EXIT" ist, wirds auch so in die Datei geschrieben). Lösung ist eigentlich relativ simpel: Puffer löschen.
Allerdings gibts dafür afaik nicht wirklich "einen Standard". Es gibt zwar fflush(stdin), aber das ist nicht standardisiert. Soll heißen, bei Linux tut das u.U. überhaupt nichts. Solange du nur für dich und unter Windows arbeitest, sollte das reichen. Ansonsten gibts noch ein paar andere Möglichkeiten, wie cin.ignore(INT_MAX);. Dabei werden einfach X Zeichen (in dem Fall INT_MAX, also ~2Mrd.) im Puffer ignoriert. Das sollte eigentlich auf jedem System funktionieren.
|