Stream: mehrere Zahlen



  • es geht um das einlesen von zahlen und ihr macht da so ein affentheater draus 🙄



  • Swordfisch:
    Weil der mir die Zahlen binär ausgibt und ich bei der cin-Eingabe auch nicht spontan auf das Zeichen für 100 oder 200 komme. Ich will die aber eigentlich ganz gerne sehen. 😉 Ja, die von Dir erwähnten Alternativen gefallen mir auch weniger gut. Ein ' ' hinzuzufügen empfinde ich gerade jedoch noch etwas weniger unelegant.

    kasper:
    Na und? Wie würdest Du es denn lösen?



  • Eisflamme schrieb:

    kasper:
    Na und? Wie würdest Du es denn lösen?

    na und weiter nichts, ist einfach nur low level sinnig. 😃
    fscanf.



  • Ne, will C++ nutzen. Außerdem ist das auch nicht besser als die obige Lösung.



  • Eisflamme schrieb:

    Ne, will C++ nutzen. Außerdem ist das auch nicht besser als die obige Lösung.

    wenn du schlankeren code und einfachere lesbarkeit nicht als besser ansiehst dann kann ich dir auch nicht weiter helfen.
    weiterhin viel spaß beim verkomplizieren der angelegenheit.
    - und tschüs -



  • Eisflamme schrieb:

    Weil der mir die Zahlen binär ausgibt und ich bei der cin-Eingabe auch nicht spontan auf das Zeichen für 100 oder 200 komme. Ich will die aber eigentlich ganz gerne sehen. 😉

    Nur die Varianten für ifstream und ofstream schreiben byteweise.



  • Swordfish:
    Stimmt, da habe ich nicht genau genug geschaut, dann ist das okay. So vieleiInterpret_castsblähen den Code halt ziemlich auf. Wie löst ein Werner z.B. dieses Problem?



  • Eisflamme schrieb:

    Wie löst ein Werner z.B. dieses Problem?

    Hallo Eisflamme,

    ganz einfach mit einem Leerzeichen zwischen den Zahlen. Ich sehe da auch gar kein Problem; oder habe ich hier was überlesen?

    struct Test
    {
        int a;
        Subtest b;
    
        friend ostream& operator<<(ostream& os, const Test& test)
        {
            return os << test.a << " " << test.b; // Leerzeichen als Trenner
        } 
        // usw.
    

    Eisflamme schrieb:

    Die offensichtliche Lösung ist ein Leerzeichen zwischen die Zahlen zu stecken. Bisher habe ich in Serializer-Lösungen über Streams so etwas aber nicht gesehen.

    ich schon, warum auch nicht

    Gruß
    Werner



  • Okay, cool, so sieht meine aktuelle Lösung auch aus. 🙂 Ich muss dann nur aufpassen, wenn beim Serialisieren plötzlich Strings auftauchen, die Leerzeichen enthalten dürfen. Dann muss std::noskipws her, damit er bei \0 trennt, richtig? Und später für den Stream noch brav ios::skipws zurücksetzen, falls es vorher drin war.



  • Hallo nochmal,

    ich frage gleich nochmal hier nach. Jetzt würde ich gerne Strings in den Stream schicken, die aber mit Leerzeichen getrennt sein können sollen. Findet ihr meine folgende Lösung in Ordnung?

    ofstream: ofs << string << '\0';
    ifstream: getline(ifs, string, '\0');


Anmelden zum Antworten