fstream .put() und .get() Befehl - Zuweisung?



  • manni66 schrieb:

    Ich habe ein Problem. Ich zeig aber nicht den Code, sondern einen anderen mit anderen Fehlern. Könnt ihr mir helfen?

    Nein!

    Echt cool. Er hat ein Problem, beschreibt es, aber der Beispielcode hat mit dem nichts zu tun. Und jetzt erwartet er, dass jemand das Problem in dem Code erkennt, den er nicht zeigt. 🙄



  • Wie ihr alle hetzt, dass es nicht der richtige Programmcode ist?
    Es ist ein Ausschnitt davon, ist doch sinnlos wenn ich's noch für die restlichen Buchstaben hinschreibe, obwohl es mir erst mal nur um einen geht - weils allgemein gar nicht geht?
    Sinnlos. 🙄

    @Belli,
    Hatte ich nur vergessen noch hin zuzuschreiben, Sorry!



  • ifstream quelle; 
    char quelldateiname; 
      
    quelle.open(quelldateiname.c_str(), ios::binary|ios::in);
    

    bitte was?
    1. native typen haben keine methoden. char ist ein nativer typ und c_str() ist ein methodenaufruf. meinst du std::string ?
    2. normal öffnet man einen dateistream im konstruktor und schliesst ihn im destruktor. spart tipparbeit, ist übersichtlicher und besserer stil (besserer stil weil du ihn erst dann anforderst wenn du ihn auch brauchst).
    3. das in -flag bei einem istream anzugeben kannst du dir sparen. das ist so oder so IMMER gesetzt bei istreams .

    char zieldatei; 
    ofstream ziel(zieldatei.c_str(), ios::binary|ios::out);
    

    hier analog tipp 1 und 3 von oben beachten.

    while(quelle.get(s)) 
        { 
            switch(s) 
            { [...]
    

    bitte macht dir eine lookup-tabelle statt so ein riesiges switch -ding, das macht alles viel leserlicher.

    ps.: ändere den code im ersten post bitte nicht andauernd. sonst kann man sich nie auf etwas fixes beziehen.



  • Das

    if(c = 1)
    

    soll was tun?



  • Nimm put aus dem switch heraus.



  • Oh verdammt!
    Wollte eigentlich string nehmen, ja, vielleicht liegts nur daran...
    Das mit Konstruktor und Destruktor hatte ich noch nicht, sollte aber bald kommen.
    Mit dem In-flag weiß ich nicht was du meinst, ios::binary|ios::in bzw. out?

    Was ist eine Look-Up Tabelle?

    if(c = 1)
    

    Ich dachte, dass das Programm zu schnell ist, deswegen wollt ich, dass das Programm erst einmal den if-Befehl abläuft, und die While Schleife "hängt".

    Das mit dem Put versuche ich auch mal, danke! 🙂
    Edit: Das mit dem Put war es, danke! 🙂

    Edit:

    Es funktioniert jetzt, bis auf dass er kein Zeilenumbruch macht, was sollte ich da versuchen?



  • einfach eine std::map bei dir für jedes zeichen ein anderes zeichen hinterlegt ist:

    std::map<char, char> LookUpTbl;
    LookUpTbl['A'] = 'J';
    // ...
    
    for(; Quelle; Ziel << LookUpTbl[Quelle.get()]);
    

    da kannst du je nach dem noch ein bisschen dran rumwerkeln. wenn du nicht alle möglichen zeichen in der map hast dann rufst du eben std::map::find() auf (statt den subscript-operator) und prüfst ob der iterator gültig ist.



  • Shortyoo schrieb:

    Es funktioniert jetzt, bis auf dass er kein Zeilenumbruch macht, was sollte ich da versuchen?

    Zeilenumbrüche nicht durch Leerzeichen ersetzen.



  • Also das mit der Map kann ich noch nicht, denke ich.^^

    @MFK Okay, danke. 🙂

    Edit:
    Funktioniert jetzt, danke! 🙂



  • Shortyoo schrieb:

    Wie ihr alle hetzt, dass es nicht der richtige Programmcode ist?
    Es ist ein Ausschnitt davon, ist doch sinnlos wenn ich's noch für die restlichen Buchstaben hinschreibe, obwohl es mir erst mal nur um einen geht - weils allgemein gar nicht geht?
    Sinnlos. 🙄

    Da hat noch wesentlich mehr gefehlt als "die restlichen Buchstaben". Eben genau die Stellen wo du Fehler gemacht hast.

    Was sinnlos ist kannst du dir jetzt selbst überlegen. Und damit meine ich nicht deinen verständlichen Ärger über die Form in der die Unzulänglichkeiten deines Beispielcodes an dich herangetragen wurden (ja, auch von mir).

    Sondern dass du einfach behauptest dass ja eh nur unwesentliche Dinge gefehlt haben. Und dass du deinen Beispielcode nichtmal ausprobiert hast. Wenn du nicht weisst wo der Fehler ist, weiso nimmst du dann an zu wissen wo er nicht ist? Und wenn du - was offensichtlich ist - nicht so gut C++ programmieren kannst, wieso nimmst du dann an beurteilen zu können, ob ein kleiner Codeausschnitt, den du mal eben so hingetippst hast, den Fehler den du suchst reproduziert, ohne es ausprobiert zu haben?


Log in to reply