Buffer in mehrere versch. Dateinamen schreiben ??



  • Hallo !
    Ich habe das problem ,das ich den pBuffer der Reihe nach in Dateien schreiben will die als dateinamen den Zähler "bytes" enthalten. Da ofstream einen const zeiger braucht muß man die in Bytes enthaltene zahl irgendwie umwandeln. Habs hier mal probiert , klappt aber nicht so wirklich(er schreibt nur eine datei). Find auch in keinem ebook oder ähnlichem eine lösung.
    1000 dank schonmal.

    char ale[12]; // bytes nach const char umwandeln !!!!!!!!
    sprintf(ale,"%d",bytes);
    string al2=ale;
    char charArray[40];
    strcpy(charArray,al2.c_str());
    ofstream outdat(charArray,ios::out|ios::binary);
    outdat.write(pBuffer,FileSize);



  • Sag nochmal ganz langsam, was du überhaupt machen willst. (wenn du den selben Text in mehrere Dateien schreiben willst, mußt du diese nacheinander öffnen und schreiben, z.B. in einer Schleife)

    vector<string> dateien;
    for(int i=0;i<dateien.size();++i)
    {
      ofstream fout(dateien[i].c_str(),ios::out|ios::binary);
      fout.write(pBuffer,FileSize);
    }
    

    PS: Dein Umkopiere für den Dateinamen ist übrigens enorm unübersichtlich und unnötig.



  • Also ich habe vor den pBuffer in immer ein wenig abgeänderter form in dateinamen zu schreiben , die dann später beispielsweise 0001 , 0002 usw. heißen.
    Die variable bytes enthält den dateinamen im int format und der soll dann in einen const char umgewandelt werden für den ofstream.



  • Zur Umwandlung von Zahlen in Strings empfehle ich mal einen Blick in die FAQ ("einmal Zahl und zurück"). Ansonsten bleibt es dabei, daß du dein Code-Fragment (eventuell etwas zurechtgestutzt) in einer Schleife einsetzen mußt:

    for(int i=0;i<=max_i;++i)
    {
      string name=int_to_str(i);
      ofstream fout(name.c_str(),...);
      ...
      fout.write(pBuffer,iSize);
    }
    

    PS: Kannst du mir mal erklären, wozu die Kopiererei char[]->string->char[] notwendig sein soll?



  • Danke erstmal.
    Probiers gleichmal aus. Hab erst vor 2 wochen angefangen c++ zu lernen .
    Und da ich nirgends etwas zu int to const char gelesen hab isses kompliziert geworden.



  • Wieso meckert mein DEV-C++ bei der zeile??? :
    string name=int_to_str(i);

    int_to_str : undeclared (first use this function )



  • Weil du diesen Satz offenbar überlesen hast:

    CStoll schrieb:

    Zur Umwandlung von Zahlen in Strings empfehle ich mal einen Blick in die FAQ ("einmal Zahl und zurück").



  • Also hab jetzt auch alleine den Fehler gefunden.
    Brauche nur sprintf(ale,"%d",bytes);
    Wäre ne einfache antwort gewesen um int nach const char zu wandeln.
    Ein problem hab ich noch : wie bekomme ich in der Zeile :
    ofstream outdat(ale,ios::out|ios::binary);
    bei ale die dateiendung ".exe" mit drangehängt ??
    und bitte keine verweise auf die FAQ da es hier um const char geht.
    danke.



  • Indem du den Aufbau des Namens änderst:

    sprintf(ale,"%d.exe",bytes);
    

    PS: Da du keine Verweise auf die FAQ willst - man: sprintf 😉



  • Ey cool , dat funktioniert.
    thanx alot


Anmelden zum Antworten