Wie bestmmt man die Länge beim ifstream?



  • Das ist einfach nur eine übung für die schule.
    wir müssen immer zwei zeichen einlesen und als dezimalzahl ausgeben.
    bd1402 -> bd 14 02 -> 189 20 2
    besser? 🙂



  • awl schrieb:

    Das ist einfach nur eine übung für die schule.
    wir müssen immer zwei zeichen einlesen und als dezimalzahl ausgeben.
    bd1402 -> bd 14 02 -> 189 20 2
    besser? 🙂

    hmm...

    #include <fstream>
    #include <iostream>
    #include <iomanip>
    
    struct two_chars
    {
      char content[2];
      wchar_t reinterpret() const {return reinterpret_cast<wchar_t>(content);}
    };
    
    std::istream& operator>> (std::istream &i, two_chars &these)
    {
      i >> these.content[0] >> these.content[1];
      return i;
    }
    
    int main()
    {
      std::ifstream stream("datei.endung");
      two_chars tmp;
      stream >> tmp;
    
      std::cout << std::hex << tmp.reinterpret();
    }
    

    so in etwa?!



  • So kompliziert? Geht es nicht einfacher? 😞



  • dochdoch:

    char tmp[2];
    std::ifstream stream("a.txt");
    stream.read(tmp, 2);
    std::cout << std::hex << reinterpret_cast<unsigned short>(tmp);
    

    das hat aber allg. nicht viel mit standard-konformität zu tun - aber für das system, auf dem du arbeitest, geht es...

    geht nat auch wieder noch toller - aber nicht mehr sehr viel kürzer^^ hab jz allerdings auch keine zeit mehr, dir noch paar andere lösungen zu präsentieren - und da du nicht mal ansatzweise sagst, was du kannst und wie du es machen würdest und ca. 0 quellcode zeigst, gibts auch keinen grund, sich die zeit zu nehmen!

    bb


  • Mod

    awl schrieb:

    So kompliziert? Geht es nicht einfacher? 😞

    Klar. aber du zeigst keinerlei Initiative, zeigst keinerlei Ansatz deinerseits und du sagst ganz klar, dass es sich um Hausaufgaben handelt. Das demotiviert Leute die dir antworten könnten.



  • Ich habe das so gemacht, aber der liest trotzdem nur ein zeichen ein. Das ist ja mein Problem.

    stringstream s;
    datei.read(puffer,2);
    s.write(puffer,2);
    s >>hex >>zahl;

    Es ist ja nicht so dass ich nichts gemacht habe.



  • Das funktioniert acuh nicht. Hat es vielleicht damit zu tun, dass ich im Unicode arbeite? Ist es da vielleicht anders?
    Sitze schon den ganzen Tag dran, hab schon so viele möglcihkeiten ausprobiert, aber der will mir einfach nicht 2 zeichen einlesen.



  • awl schrieb:

    Das funktioniert acuh nicht. Hat es vielleicht damit zu tun, dass ich im Unicode arbeite? Ist es da vielleicht anders?
    Sitze schon den ganzen Tag dran, hab schon so viele möglcihkeiten ausprobiert, aber der will mir einfach nicht 2 zeichen einlesen.

    zeig doch endlich mal _deinen_ ansatz...



  • An alle ein großes Dankeschön!
    Habs hingekriegt 🙂



  • 😃


Anmelden zum Antworten