Einlesen eines beliebig langen Strings in C++



  • Hallo,

    wie kann ich einen beliebig langen String von cin einlesen?

    Meine Idee wäre gewesen so lange die Benutzereingabe in einer while Schleife zu lesen bis Zeilenumbruch eingegeben wird.

    Aber nun ist natürlich die Frage wie das geht, also wie kann ich Zeichen auslesen, sie dabei aber im Puffer lassen um sie anschließend in ein korrekt dimensioniertes char-Array zu speichern?

    cin.get scheint ja leider aus dem Puffer zu löschen 😞

    Ciao
    Andreas

    PS: Kennt jemand evtl. einen Parser der durch , getrennte int Werte aus einer Zeichenkette ausliest und in ein int Array schreibt?



  • wie wäre es mit selber schreiben?

    /Edit:
    Wieso in ein Char-Array, wozu haben wir die STL und damti die std::string Klasse?



  • Hallo,

    ja alternative wäre natürlich selbst schreiben.

    STL kann in diesem Projekt leider nicht verwendet werden. Es muss wohl oder übel eine Eigenkreation ran.

    Mir würde es reichen zu wissen wie man es hinkriegt das der Benutzer etwas in den Eingabepuffer schreibt und wie man dann die länge des eingegebenen ermittelt um ein char Array entsprechend dimensionieren zu können.

    Zur not könnten natürlich auch C Funktionen 'herhalten' wenn es für istream keine entsprechenden methoden gibt.

    Ciao



  • Wenn Du cin benutzt, steht auch die Standardbibliothek zur Verfügung. Da nimmst Du dann std::getline mit cin, und wenn es unbedingt nötig ist kannst Du den Puffer von std::string::c_str() in einen korrekt dimensionierten Char-Puffer kopieren. Die Dimension bekommst Du ja über std::string::size()


Anmelden zum Antworten