Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C++] Scrivere file in append senza rimpiazzare

    Salve a tutti,
    vorrei scrivere del testo su file già esistente, non in fondo al file, ma potendo scegliere la posizione all'interno del file (usando la funzione seek di fstream) e inserire nuove informazioni. A questo punto mi direte è semplice! Non proprio. Se mi sposto con seek e scrivo, rimpiazzo il contenuto successivo a quella posizione e non voglio che ciò accada.

    Come faccio?
    Grazie a tutti per le risposte!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    E quali risposte dare se non mostri il codice?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    #include <fstream>
    using namespace std;

    int main () {
    long pos;

    ofstream outfile;
    outfile.open ("test.txt");

    outfile.write ("This is an apple",16);
    pos=outfile.tellp();
    outfile.seekp (pos-7);
    outfile.write (" sam",4);

    outfile.close();

    return 0;
    }


    Questo è l'esempio del codice che crea il file e ci scrive "This is an apple" e dopo la modifica "This is a sample". Se sposto il puntatore dello stream del file indietro di 7 dalla fine (ovviamente usando tellp per recuperare l'indirizzo della posizione della fine e sottraendovi 7 per tornare indietro con seekp), quello che scrivo andrà a rimpiazzare "n ap" con " sam". Se io volessi invece NON rimpiazzare ma aggiungere codice facendolo diventare "This is a samn apple" che modifiche apportare al codice?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Questa è un'altra storia. Non puoi aggiungere dati nel mezzo di un file senza riscrivere tutta la parte del file che segue. Cioè se nel file hai

    parola1 parola2

    e vuoi farlo diventare

    parola1 parola3 parola2

    la seek non ti serve a nulla.

    Dovrai creare un altro file in cui scriverai la prima parte del primo file

    parola1

    i nuovi dati

    parola3

    e la parte finale del primo file

    parola2

    Alla fine cancellerai il primo file e rinominerai il secondo.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.