datei nur auslesen ohne das der inhalt ausgegeben wird



  • Hallo liebe forumuser,

    wie kriege ich es hin eine datei nur auszulesen ohne das der user den text lesen kann?

    also nur auslesen ohne ausgabe

    schonmal danke im vorraus

    mfg derdefeckter


  • Mod

    Nimm den Ansatz der dir in den anderen Threads gegeben wurde und nimm die Anweisung zur Ausgabe raus. Und jetzt frag bitte nicht, welche der Anweisungen für die Ausgabe zuständig ist... 🙄



  • hayy

    dann bringt mein compiler mireine fehlermeldung

    #include <algorithm>
    #include <fstream>
    #include <iostream>
    #include <iterator>
    
    using namespace std;
    
    int main(void) 
    {
      ifstream in("witz.txt");
      copy(istreambuf_iterator<char>(in),
           istreambuf_iterator<char>(),
           ostreambuf_iterator<char>(cout));// wenn ich den raus nehme 
                                            //bringt er mir eine fheler meldung
      system("PAUSE");
      return EXIT_SUCCESS;
    }
    


  • derdefeckter schrieb:

    hayy

    dann bringt mein compiler mireine fehlermeldung

    #include <algorithm>
    #include <fstream>
    #include <iostream>
    #include <iterator>
     
    using namespace std;
     
    int main(void) 
    {
      ifstream in("witz.txt");
      copy(istreambuf_iterator<char>(in),
           istreambuf_iterator<char>(),
           ostreambuf_iterator<char>(cout));// wenn ich den raus nehme 
                                            //bringt er mir eine fheler meldung
      system("PAUSE");
      return EXIT_SUCCESS;
    }
    

    die grundaussage ist, dass du nicht weisst was der quellcode macht? 😃



  • wer war denn auch so blöd, nem blutigen Anfänger direkt nen kompletten STL-Einzeiler reinzudrücken.

    Wie wärs wenn er erstmal lernt, zeilenweise mit getline auszulesen und Stück für Stück versteht, was da vor sich geht.



  • Hör mal, derdefeckter, so hat das doch keinen Sinn. Du kannst nicht einfach Codeschnipsel zusammenbasteln, ohne deren Bedeutung zu verstehen. Jedenfalls nicht, wenn du wirklich programmieren lernen willst. Nimm dir ein Buch oder Tutorial für Anfänger und arbeite es durch (nicht überfliegen, sondern langsam lesen, verstehen und ausprobieren). 🙂

    Übrigens, wenn du einfach die markierte Zeile gelöscht hast (bis auf Klammer+Semikolon hoffentlich), woher soll std::copy dann wissen, wohin es kopieren soll? Du kannst einer Funktion nicht einfach beliebig Parameter klauen...



  • hallo,

    daswegen frag ich ja in foren nach um eine sinnvolle und auch helfende antwort zu bekommen ich dachte das wäre sinn eines forums oder?

    mfg derdefeckter



  • defeckter schrieb:

    hallo,

    daswegen frag ich ja in foren nach um eine sinnvolle und auch helfende antwort zu bekommen ich dachte das wäre sinn eines forums oder?

    mfg derdefeckter

    Na ja, du kriegst hier bei einzelnen Problemen immer Hilfe, kein Thema. Aber da dir fast offensichtlich so viele Grundlagen fehlen, bringt diese Hilfe oft nichts, wenn du sie im Einzelnen nicht verstehst (einfach, weil du bestimmte Operatoren, Schlüsselwörter, Funktionen oder sonstwas noch nicht kennst). Du kannst natürlich fragen "wie macht man dies und das", und jemand klatscht dir einen Beispielcode hin. Das bringt dich dann kurzfristig weiter und beschert dir schon mal keine Erfolgserlebnisse, klar. Aber auf lange Sicht kann die ganze Geschichte nur klappen, wenn du dich mal hinsetzt und die Grundlagen paukst, bis du sie drauf hast. Dann wird dir in Zukunft auch nie wieder der Gedanke kommen, aus einem bestehenden Funktionsaufruf einfach mal einen Parameter rauszunehmen in der Hoffnung, dass das so klappt. Dann wirst du wissen, dass das natürlich nicht so einfach geht, und dann wirst du wahrscheinlich auch wissen, wie es geht. 🙂



  • defeckter schrieb:

    .. daswegen frag ich ja in foren nach um eine sinnvolle und auch helfende antwort zu bekommen ich dachte das wäre sinn eines forums oder?

    Genau das ist der Sinn eines Forums. Und die Wahrscheinlichkeit auf die helfende Antwort erhöht sich immens, wenn man klar vorgibt was man eigentlich vorhat. Wenn Du sagst, Du möchtest keine Ausgabe, dann ist das wenig hilfreich. Die Ausgabe entfällt, wenn Du das das gesamte copy-Statement einfach weg lässt.

    Um auf meckerkopp zurückzukommen - was Du zunächst wissen solltest ist, dass man aus einer Datei Integer- und Fließkommazahlen und Worte lesen kann

    #include <fstream>
    #include <iostream>
    #include <string>
    
    int main()
    {
        using namespace std;
        ifstream datei("input.txt"); // enthält z.B. "42 3.142 Witz"
        int integerZahl;
        double fliesskommaZahl;
        string wort;
        datei >> integerZahl >> fliesskommaZahl >> wort;
        if( datei ) // ist alles ohne Fehler passiert
        {
            // hier enthält integerZahl 42, fliesskommaZahl 3.142 und wort Witz
        }
        return 0;
    }
    

    alles andere kommt später, und selbstverständlich kannst Du hier nachfragen.

    Die Zeilen aus einer Datei brauchen die wenigsten. Jemand der mit getline die einzelnen Zeilen in strings einliest um sie anschließend mit String-Operationen wieder aus einander zu nehmen der ist wie jemand, der sich ein teures Auto kauft und ein Pferd davor spannt, um es zu bewegen. Er weiß nicht, dass das Auto einen Motor hat, mit dem es selbst fahren kann.

    Gruß
    Werner



  • oder wenn du nur etwas funktionierendes möchtest:

    #include <fstream>
    #include <iomanip>
    #include <iterator>
    #include <string>
    
    std::string get_file_content(const char* filename)
    {
      std::fstream file_stream(filename, std::ios_base::in);
      file_stream << std::noskipws;
    
      std::input_iterator<char> begin(file_stream);
      std::input_iterator<char> end;
    
      std::string ret_val(begin, end);
      return ret_val;
    }
    

    aufruf:

    int main()
    {
      /*...*/
      std::string content = get_file_content("./test.txt");
      /*...*/
    }
    

    bb


Anmelden zum Antworten