iostream: wie leerzeichen mit einlesen?



  • hi,
    ich möchte aus einem stream alle zeichen einlesen, ca so:

    char char1;
    while(stream1>>char1)
    //...
    

    wie sag ich iostream, dass er leerzeichen und tabs mitlesen soll? sry wenn die frage schonmal gestellt wurde



  • nimm std::istream::get



  • jo, des hatte ich schon probiert, allerdings liest er dann auch absätze mit ein, was ich ja dann nochma extra behandeln müsste 😕 man kann doch irgendwie mit ignore einstellen, welche characters gelesen werden und welche net, oder?



  • Was ein Space ist (also übersprungen wird) ist im locale im Stream festgehalten. Per imbue kannst du dieses locale ändern. Um nun ein locale so einzustellen, dass sie ein Space nicht als Space ansieht musste du das ctype facet ändern. Dies tuest du indem du davon erbst und do_is überlädst.

    Kurz gesagt in den meisten Fällen ist ein einfachere Test des Rückgabe Werts von get einfacher.



  • In C++ mit skipws, also in etwa so

    cin >> skipws >> "Variable zum Einlesen";
    


  • CSS schrieb:

    In C++ mit skipws, also in etwa so

    cin >> skipws >> "Variable zum Einlesen";
    

    Erstens kümmert sich skipws nur um führende Whitespace-Zeichen. Und zweitens werden solche dann übersprungen. skipws hilft hier also kein Stück weiter.


Anmelden zum Antworten