Importazione file di testo c++

di il
9 risposte

Importazione file di testo c++

Ciao a tutti vi volevo chiedere un aiuto per un problema che riguarda l'importazione di un file di testo in una stringa unica che viene usata poi per dei controlli.
Fino ad ora ho usato il codice:
while (getline(file, lineaFile))
stringa += lineaFile;
importando una riga del txt alla volta e inserendola nella stringa. Questo metodo funziona ma ci mette moltissimo tempo in quanto i txt che importo hanno anche 10 milioni di righe e avevo pensato quindi se c'era un modo per importare il file tutto in una volta nella stringa e se questo poteva velocizzarlo in qualche modo..
Sapete aiutarmi? Grazie

9 Risposte

  • Re: Importazione file di testo c++

    Potresti fare tutto con una sola fread
    
    	FILE *f = fopen("tuofile.txt", "rb");
    	fseek(f, 0, SEEK_END);
    	long fsize = ftell(f);
    	fseek(f, 0, SEEK_SET); 
    	char *alltext = (char *)malloc(fsize + 1);
    	fread(alltext, 1, fsize, f);
    	fclose(f);
    	alltext[fsize] = 0;
    
    e avere il contenuto del file in alltext
  • Re: Importazione file di testo c++

    oregon ha scritto:


    Potresti fare tutto con una sola fread
    
    	FILE *f = fopen("tuofile.txt", "rb");
    	fseek(f, 0, SEEK_END);
    	long fsize = ftell(f);
    	fseek(f, 0, SEEK_SET); 
    	char *alltext = (char *)malloc(fsize + 1);
    	fread(alltext, 1, fsize, f);
    	fclose(f);
    	alltext[fsize] = 0;
    
    e avere il contenuto del file in alltext
    Essendo nuovo in questo mondo conosco praticamente solo le cose basilari, potresti spiegarmi come funziona questo codice e se in seguito si posso trasferire il contenuto di alltext in una stringa?
    Inoltre avevo letto sul web che si poteva usare anche il comando fstream.read per leggere dei "blocchi" del testo ma anche li non ho capito molto bene come si usa.. Grazie
  • Re: Importazione file di testo c++

    Praticamente alltext è una stringa. Ma tutto dipende dal reale problema. Ovvero cosa c'è nelle linee e cosa ci devi fare tu. Poi dovremmo capire se effettivamente hai la necessità di avere tutto in memoria o la lettura ed elaborazione può svvenire linea dopo linea.

    Inoltre non capisco perché non usi un linguaggio che conosci di più dato che del c/c++ non hai neanche le basi.
  • Re: Importazione file di testo c++

    oregon ha scritto:


    Praticamente alltext è una stringa. Ma tutto dipende dal reale problema. Ovvero cosa c'è nelle linee e cosa ci devi fare tu. Poi dovremmo capire se effettivamente hai la necessità di avere tutto in memoria o la lettura ed elaborazione può svvenire linea dopo linea.

    Inoltre non capisco perché non usi un linguaggio che conosci di più dato che del c/c++ non hai neanche le basi.
    Ok ti spiego sto facendo questo programma in cui do in input dei txt in cui sono presenti tutte le stringhe di vari processi di Windows
    (esempio di una stringa: 0x7ffe755f9680 (50): RYwTiizs2trQ )
    Come prima cosa ho provato a importare il file riga per riga come nel primo messaggio del thread per poi filtrarlo con un ciclo ma dalle prove che ho fatto questo sembra il metodo più lento.
    Poi ho provato sempre a importare il file riga per riga ma filtrando direttamente ogni volta la riga importata e questo metodo si è rivelato un pò più veloce.
    Poi però ho trovato sul web il comando stringa.find che mi permette di filtrare una stringa anche di grandissime dimensioni in meno di un secondo e allora stavo appunto pensando di trovare un metodo per importare il txt tutto in una botta in modo veloce così da non dover usare il metodo del getline che ci mette molto tempo.
  • Re: Importazione file di testo c++

    R0SsAN ha scritto:


    in cui sono presenti tutte le stringhe di vari processi di Windows
    (esempio di una stringa: 0x7ffe755f9680 (50): RYwTiizs2trQ )
    Cosa?
  • Re: Importazione file di testo c++

    oregon ha scritto:


    R0SsAN ha scritto:


    in cui sono presenti tutte le stringhe di vari processi di Windows
    (esempio di una stringa: 0x7ffe755f9680 (50): RYwTiizs2trQ )
    Cosa?
    Sono le stringhe dei vari processi ad esempio csrss,explorer ecc che rimangono in memoria che possono essere trasferite tutte in un file txt con un programma chiamato processhacker
  • Re: Importazione file di testo c++

    A che scopo?
  • Re: Importazione file di testo c++

    oregon ha scritto:


    A che scopo?
    Per verificare se sono stati aperti determinati programmi
  • Re: Importazione file di testo c++

    Roba da aspirante acher insomma ... beh ... buona fortuna, a me piacciono poco questi argomenti, soprattutto da chi non ha neanche le basi per discuterne.
Devi accedere o registrarti per scrivere nel forum
9 risposte