Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [c++]istream , fstream e modifiche

    ciao.
    Devo sostituire le prime 220 righe di un file xml di svariate centinaia di MB.
    è possibile leggere solo le prime righe e sostituire solo quelle senza leggere tutto il file?
    Il problema è che poi devo passare ad una libreria l'url del file modificato salvato o un istream.
    C'è qualche metodo con gli stream per fare questo?

    grazie.

  2. #2
    Gli stream e i file in generale sono byte-oriented, non line-oriented, per cui non esiste un modo semplice per fare quello che chiedi in maniera efficiente; questo vale in generale per i i formati testuali, che non sono assolutamente adatti per manipolare grandi quantità di dati in maniera efficiente.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    In realtà, ripensandoci, se il codice a cui devi passare i dati accetta un istream&, dovrebbe essere possibile, ma non è semplicissimo. Quello che bisognerebbe fare sarebbe una classe derivata da std::streambuf che si occupi di "simulare" il file con le prime linee sostituite (ovvero, se gli vengono richiesti i primi X caratteri li pesca dal testo sostituito, oltre li pesca dal file).
    Per avere un'idea di come funzionano gli streambuf & co. puoi leggere
    http://stackoverflow.com/questions/8...ow-do-i-use-it
    http://en.cppreference.com/w/cpp/io/basic_streambuf
    http://www.mr-edd.co.uk/blog/beginners_guide_streambuf
    http://artofcode.wordpress.com/2010/...-stdstreambuf/
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    grazie Mitaly

  5. #5
    Amaro C++, il gusto pieno dell'undefined behavior.

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.