Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di sylvaticus
    Registrato dal
    Aug 2004
    Messaggi
    1,207

    [C++] appendere per riga su file di testo

    E' possibile appendere dei dati in un file di output (di testo) verticalmente, senza consumare troppe risorse computazionali (I/O) ??

    Invece del classico modo:

    codice:
           VARX     VARY      VARZ...
    year1  x1        y1        z1
    year2  x2        y2        z2
    ..vorrei usare il molto più leggibile:

    codice:
          year1    year2 ..
    VARX    x1       x2 ...
    VARY    y1       y2 ...
    VARZ    z1       z2 ...
    ...
    dove le serie 1,2.. sono scritte su files in momenti differenti... una specia di appendByRow().. e vorrei evitare di caricarmi in memoria l'intero file e poi riscriverlo da capo riga per riga...

    è possibile ??
    <<contro i gas serra, spero più nelle nuove tecnologie pulite che nelle conferenze internazionali>>
    -- Steven Chu

  2. #2
    Non puoi, a meno di non caricare in memoria l'intero file (eventualmente a blocchi di tot byte) per riscriverlo modificato.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    se il file di input è strutturato, per esempio separato da campi di uguale ampiezza, è possibile eseguire un accesso random e leggere ad ogni ciclo solo il dato che interessa per scriverlo sul file di output utilizzando la funzione di seek.
    Se è strutturato in righe e ciascuna riga in campi di cui non conosci la dimensioni a priori ma ne conosci il numero puoi utilizzare awk per fare una scansione del file. L'output di awk lo puoi leggere all'interno del tuo programma aprendo un file pipe con popen. Di default il separatore è uno spazio ma puoi modificarlo, se ne hai bisogno.
    ciao
    sergio

  4. #4
    Utente di HTML.it L'avatar di sylvaticus
    Registrato dal
    Aug 2004
    Messaggi
    1,207
    grazie.. in questo caso evito la soluzione di awk in quanto è un programma multipiattaforma..

    Ho finito a leggere il file (pochi KB, ma il problema è che sono 40000!) linea per linea con getline, appendo la stringa con i miei dati e salvando il tutto su un gran buffer (stringa) che poi riscrivo sul file tutto in uno...
    <<contro i gas serra, spero più nelle nuove tecnologie pulite che nelle conferenze internazionali>>
    -- Steven Chu

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.