Problem bei std::cin.getline

Rene42

Erfahrenes Mitglied
Hi Leute,

verwende folgenden Code:

Code:
void Brett::Abfrage()
     {
              
      std::cout << "Geben Sie die Brettnummer ein!\n";
      std::cin.getline(Brett, 4);
      
      std::cout << "Geben Sie den Namen des Spielers ein!\n";
      std::cin.getline(Name, 128);
      
      std::cout << "Wann war die Partie zu Ende? (Uhr wird automatisch ergänzt)\n";
      std::cin.getline(Uhrzeit, 16);
      
      std::cout << "Geben Sie die Farbe des Spielers ein!\n";
      std::cin.getline(Farbe, 8);
      
      std::cout << "Geben Sie das Ergebnis der Partie ein!\n";
      std::cin.getline(Punkte, 8);
      
      std::cout << "Geben Sie den Kommentar zur Partie hier an!\n";
      std::cin.getline(Kommentar, 512);
      
     };

Die ersten beiden Fragen funktionieren gut, von der Dritten wird nur das erste Zeichen genommen und die anderen werden einfach gedruckt ohne dem Benutzer Zeit für eine Eingabe zu lassen.

Hoffe jemand kennt sich aus. Habe die getline Funktion gegooglet, aber bin der Meinung es wie in den Beispielen gemacht zu haben.

Gruss Rene
 
Hi.

Es gibt 2 getline Funktionen.

  1. http://www.cplusplus.com/reference/iostream/istream/getline/
  2. http://www.cplusplus.com/reference/string/getline/

Zu deinem Code: was ist Name, was ist Brett, was ist Farbe usw.? Variablen schreibt man in C++ üblicherweise klein.

Aus der Doku:
Characters are extracted until either (n - 1) characters have been extracted or the delimiting character is found
D.h. bei deinem ersten Aufruf werden max. 3 Zeichen von der Standardeingabe gelesen. Wenn danach ein \n kommt, steht das natürlich immer noch in der Eingabe und wird von dem nächsten getline ausgelesen.

C++:
#include <string>
#include <iostream>

using namespace std;

int main(void) {
  string name;

  cout << "Geben Sie den Namen des Spielers ein!\n";
  if (getline(cin, name)) {
     cout << "dein Name ist: " << name << endl;
  } else {
     // Fehler.
  }
}

Gruß

PS: Vergiss nicht Themen als erledigt zu markieren wenn deine Frage beantwortet ist.
 
Zurück