string-Klasse und Leerzeichen?



  • Hey

    string s1;
    cin >> s1;
    

    Ausgabe (falls der Benutzer "Hallo Welt" eingibt)
    nur Hallo 😮

    Warum wird denn das Leerzeichen einfach "abgeschnitten" - kann man das irgentwie verhindern 😕

    Thanks



  • cin liest die eingabe bis zum nächsten whitespace, funktionieren tut das mit strings via std::getline

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main () {
      string str;
      getline (cin, str);
      cout << str << "\n";
    }
    

    Damit sollte die Eingabe auch mit leerzeichen gelesen werden.
    Man könnte auch eine andere Variante der funktion nutzen bei der das abbruch-zeichen selbst angegeben wird, einfach als 3ter paramter als char. Standardmäßig ist das ein \n, also eine neue Zeile



  • Willst du eine ganze Zeile einlesen, kannst du std::getline(stream, string) nutzen.

    Operator >> liest nur bis zum nächsten Whitespace. Das kann entweder mit dem Operator std::noskipws oder std::getline umgangen werden.



  • Hast Recht, hab irgentwie nen Denkfehler gehabt,

    naja funktioniert jetzt, vielen Dank


Anmelden zum Antworten