fstream.h ist veraltet, welche kann ich nehmen?



  • Ich versuche gerade eine Datei zu öffnen!
    Benutze Suse 8.2 und programmiere mit KDevelop!

    Problem ist, das ich fstream verwendet habe und da meckert er, dass fstream.h wohl veraltet ist und ich eine andere benutzen soll, aber welche?

    Gruß skontox



  • du hast nicht zufällig #include <fstream.h> gemacht anstatt wies sich gehört #include <fstream> in einem C++-Programm?



  • Doch hatte ich!
    Hab das aus einem relativ neuen Buch! (C++ Programmierung Thomas Hagemann aus dem Franzis-Verlag S.244)!
    Scheint ja nicht so dolle zu sein!
    Ich hab das jetzt zwar mit #include <fstream> probiert, da meckert er aber:
    fstream undeclared...

    Könntet Ihr vielleicht bitte mal ein kleines Beispiel posten, wie man unter Linux eine Datei nur zum lesen öffnet?

    mit ofstream oder ifstream?

    Gruß skontox



  • #include <iostream>
    #include <string>
    #include <fstream>
    
    using namespace std;
    
    int main(){
    
     ifstream outdatei("testdatei");
     string zeile;
     string query = "abbruch";
     string nummer;
     int zeigerpos;
    
     cout << "Geben sie eine Telefonnummer ein: "; 
     cin >> nummer;
    
     bool selectfund=false;
    
     while(!outdatei.eof()){
      getline(outdatei, zeile); //Datei Zeile fuer Zeile einlesen
      cout << zeile << endl; //Zeile fuer Zeile ausgeben
    
      if (!zeile.find(query)){
      zeigerpos=outdatei.tellg();
      outdatei.close();
      ofstream indatei("testdatei", ios::zeigerpos);
      indatei.seekp(zeigerpos-1, ios::beg);
    
      indatei <<  "\n<option>" << nummer << "</option>" << endl;
       selectfund=true;
       break;
      }
     }
     cout << zeigerpos << endl;
     if (selectfund){
      cout << "select wurde gefunden" << endl;
     }
     else{
      cout << "select wurde nicht gefunden" << endl;
     }
    
    return 0;
    }
    

    Hab ich irgendwann mal testhalber produziert weis nimmer obs geht probiers einfach mal. auserdem bist du glaub ich im falschen forum -> c++



  • Besten Dank probier ich gleich mal aus!
    Ja, bin ich nun im falschen Forum oder nicht?
    Ich war eben schon im Falschen. Ich programmiere aber unter Linux.

    War mir da nicht ganz sicher, wo ich es hinposten sollte! Da ich unter Linux programmiere und dachte das es Linux spezifisch sein könnte habe ich es hier hineingepostet. Tut mir leid, falls, dass mal wieder falsch war. War keine Absicht!

    Gruß skontox



  • Hi,

    es kommt auf das "using namespace std;" an...

    PS: In der Fehlermeldung wurde doch nur das .h bemängelt, und gesagt, man soll es ohne .h machen..., oder?



  • Ich glaub ich kenn das Buch ... IMHO ein Griff ins Klo, auch wenn die Bewertungen bei Amazon scheinbar eine andere Sprache sprechen.



  • Sorry, etwas Off Topic, aber:

    skontox schrieb:

    Besten Dank probier ich gleich mal aus!
    Ja, bin ich nun im falschen Forum oder nicht?
    Ich war eben schon im Falschen. Ich programmiere aber unter Linux.

    Es kommt auf das Thema an.
    Du hast im Standard C++ Forum zum Thema "Wie pinge ich unter C++ einen anderen Computer an" ein Thema erstellt.
    Das passt dort aber nicht hin, weil C++ (nach Standard) keine IPs kennt, ja nicht einmal ein Verzeichnis geschweige denn einen Bildschirm.
    Allerdings kennt C++ Dateien und fstreams, das heißt, dass diese Frage im C++ Forum schon richtig aufgehoben wäre.
    Es kommt nicht drauf an, welches Betriebssystem du verwendest, wenn du Standard C++ Mittel nutzt, nur wenn es dann betriebssystemspezifisch wird, verwende das richtige Subforum 🙂
    Alles klar?



  • Auch dir besten Dank (c++eus)!
    ich hab das mal hinzugefügt!

    Jetzt meckert er aber hier:

    fstream file;
    ...
    file.open(fileName,ios::in | ios::nocreate); // open for reading with no create param
    

    er kennt ios::nocreate nicht!

    Ich probier das ganze jetzt mit ofstream wie oben beschrieben!

    Gruß skontox



  • An "davie"

    Alles klar! Habs kapiert! 😉
    Werde mich absofort bessern!
    Damit Du nicht soviel arbeit hast! 🤡

    Gruß skontox



  • Naja, erstens ergibt nocreate zusammen mit ios::in keinen Sinn, und zweitens gibts nocreate in ISO-C++ nicht mehr.



  • Da, kann man mal sehen was das für ein blödes Buch ist!
    Zum Glück war es so günstig! 😉

    Gruß skontox



  • hä wo hab ich den in meinem scrip ios:nocreate drin?



  • Er meinte mein Thread mit dem Code:

    file.open(fileName,ios::in | ios::nocreate); // open for reading with no create param
    

    😉

    Schönen Dank nochmal für Deinen Code!

    Ich hab mir das wichtigste daraus gelesen und es läuft jetzt bei mir!

    Gruß skontox



  • ups da stand ich wohl aufm schlauch 🙄


Anmelden zum Antworten