Daten in den Arbeitsspeicher legen



  • Ja genauso mache ich es ja auch nur ebend nicht mit getline sondern getc. Getline geht bei mir nicht da ich immer wissen muss ob ' ' oder '/n'
    meine folge trennt. Da ich bei ' ' was anderes als bei '/n' machen muss



  • Ok, leider habe ich noch keine direkte Antwort auf meine Frage erhalten. Ich würde mich sehr freuen wenn jemand der Ahnung hat, ob ich eine txt in HS legen kann etwas dazu schreiben würde. Egal ob es geht oder nicht. Auch wenn das nicht möglich ist würde ich mich über eine Antwort freuen.



  • Dann schau dir doch mal was zu MemoryMapping an.



  • Hallo,

    Man könnte auch binär in einen char-Buffer einlesen (mit read oder so) und den dann bearbeiten.



  • in c++ gibt es string-streams 😃

    du kannst damit einen c++-string genauso bearbeiten wie eine datei. lies also die text-datei einfach in einen string-stream ein, bearbeite sie, und schreibe sie wieder zurück auf die platte.



  • Konfusius schrieb:

    in c++ gibt es string-streams 😃
    du kannst damit einen c++-string genauso bearbeiten wie eine datei. lies also die text-datei einfach in einen string-stream ein, bearbeite sie, und schreibe sie wieder zurück auf die platte.

    mein reden 👍



  • 3 sachen:

    0. hör' auf konfusius und miller_m. nimm stringstreams.
    1. die chance ist groß, dass die fstreams von c++ die datei schon von sich aus "in den 'hauptspeicher'" laden. bin mir aber nicht sicher
    2. der operator>> von fstream kann auch text-floats einlesen. angenommen du hast in einer textdatei "text.txt"

    5 127.0 137.46
    137.9 137.999 279.1 133.7
    

    stehen.
    dann wird das da:

    ifstream i("text.txt");
    float a[7];
    i >> a[0]
    i >> a[1]
    i >> a[2]
    i >> a[3]
    // usw, kann auch ne schleife oder sonstwas sein
    

    das array "a" mit den float-werten füllen. ganz ohne zeichenweises einlesen.



  • ich würde sogar alles in ein string lesen und dann erst einen stringstream davon erzeugen. der syntax bleibt der gleiche.

    template<typenmae Stream_>
    void Parse(Stream &s)
    {
        float x;
        s >> f;
        // usw
    }
    
    int main()
    {
        // von datei lesen
        ifstream f("text.txt");
        Parse(f);
        f.close();
    };
    // oder alles in buffer lesen un komplett im speicher parsen
    int main()
    {
        std::string strBuffer;
        ReadFileInBuffer("text.txt", strBuffer);
        std::stringstream sstr(strBuffer);
        Parse(sstr);
    };
    


  • miller_m schrieb:

    std::stringstream sstr(strBuffer);
    

    wird da nicht einmal unnötig umkopiert?



  • OK danke für die Antworten, werde mich jetzt mal das Wochenende ran setzen und doch mal probieren das ganze mit den string stream zu machen. Also danke nochmal


Anmelden zum Antworten