string array Elemente streamen



  • Ich möchte, dass ein array von unterschiedlich langen strings elementweise in eine Datei geschrieben wird. So sieht mein code aus:

    #include <stdio.h>
    #include <string>
    usign namespace std;
    
    int main()
    {
        string array [3] = {"bla", "blabla", "blablabla"};
    
        FILE * output = fopen("output.dat", "wb");
    
        for (int i = 0; i < 3; i++)
            fwrite(&array[i], array[i].length(), 1, output);
    
        fclose(output);
        return 0;
    
    }
    

    Am Schluss sollte output.dat also bla\0blabla\0blablabla\0 enthalten, bzw. einfach alle nullterminierten strings aneinander. Nur ist das leider nicht der Fall. Der Fehler muss beim ersten parameter von fwrite liegen. Wie kann ich die Adresse eines Elements eines string arrays korrekt übergeben?





  • hmm, wie wärs mit

    using namespace std;
    

    statt

    usign namespace std;
    

    ?? 😉



  • fwrite(&array[i], array[i].length(), 1, output);
    

    du benutzt &array[i], um einen zeiger auf einen c-string zu bekommen. nun ist array aber ein array von stl-strings. um einen stl-string in einen c-string umzuwandeln, mußt du die string-methode c_str() benutzen:

    fwrite(array[i].c_str(), array[i].length()+1, 1, output);
    

    außerdem mußt du array[i].length()+1 schreiben, denn das abschließende nul-byte ist ja in der string-länge nicht mit drin.

    EDIT
    ach ja, und benutze

    #include<cstdio>
    

    anstelle von

    #include <stdio.h>
    


  • Juhuu, es hat geklappt. Ich danke euch!!! 👍 😃


Anmelden zum Antworten