daten einlesen



  • Ich lerne mit dem Buch C++ Primer und bin jetzt beim E/A Kapitel und wollte folgenden code ausprobieren

    #include <fstream>
    #include <iostream>
    #include <string>
    
    int main()
    {
      std::string datei_name;
      std::cin >> datei_name;
      ifstream data(datei_name.c_str());
      if(data) std::cout << "succes" << std::endl;
      else std::cout << "fail" << std::endl;
      system("PAUSE");
    }
    

    allerdings funktioniert der leider nicht.

    Eine weitere Frage ist, was muss ich für den Dateinamen eingeben? Ist es der Systempfad oder einfach nur der Name.

    Danke für die Hilfe


  • Mod

    Jud4s schrieb:

    allerdings funktioniert der leider nicht.

    Lies dir mal den Thread "Du brauchst Hilfe?" durch. Dann kann dir auch geholfen werden. Hier hast du Glück, das Problem ist so einfach, dass ich dir auch ohne Fehlermeldung und Frage helfen kann:

    #include <fstream>
    #include <iostream>
    #include <string>
    #include <cstdlib>  // Für system
    
    int main()
    {
      std::string datei_name;
      std::cin >> datei_name;
      std::ifstream data(datei_name.c_str());      // Namespacequalifikation von ifstream vergessen
      if(data) std::cout << "succes" << std::endl;
      else std::cout << "fail" << std::endl;
      system("PAUSE");    // Ist nicht portabel und sollte eigentlich nicht verwendet werden
    }
    

    Eine weitere Frage ist, was muss ich für den Dateinamen eingeben? Ist es der Systempfad oder einfach nur der Name.

    Der Name und optional noch ein Pfad davor. Ansonsten wird im Standardpfad gesucht.

    Stand das wirklich 1:1 so im C++ Primer? Da wäre ich ja schwer enttäuscht, das Buch hat so einen guten Ruf.



  • nja so 1/2

    es wird davon ausgegenagen das man "using namesspace std" benutzt.
    Aber ansonsten habe ich es so aus meinem Buch kopiert.

    Sorry was meine Anfrage angeht, hatte vergessen eine Fehlerbeschreibung zu geben :S

    Was soll ich statt System("PAUSE") benutzen?

    Ich will nun auch in die Datei schreiben, allerdings weiß ich nicht welchen Operator ich da nehmen soll, habe es mit >> probiert, aber der Compiler gibt einen error:

    std::ofstream data_writeme(datei_name.c_str()); std::ofstream::app);
      if(data_writeme)
      {
    	  data_writeme >> datei_name;  //geht nicht '>>' unbekannt  //soll den dateipfad in die datei speichern
      }
    

  • Mod

    Jud4s schrieb:

    Was soll ich statt System("PAUSE") benutzen?

    Optimalerweise gar nichts, da man Konsolenprogramme ja schließlich von der Konsole ausführen sollte. Wenn es aber tatsächlich nötig sein sollte, dann findest du in den FAQ portable Alternativen.

    Ich will nun auch in die Datei schreiben, allerdings weiß ich nicht welchen Operator ich da nehmen soll, habe es mit >> probiert, aber der Compiler gibt einen error:

    Das ist der Operator <<, wie bei allen anderen Ausgaben auch.



  • okey, danke es funktioniert jetzt.


Anmelden zum Antworten