Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    [c++] Gestire un file in memoria... contare righe, confrontarlo con altro file...

    Per adesso, grazie al forum, sono riuscito a memorizzare in run time un file di moltissime righe (2.000.000) in pochissimi sec.

    Adesso dovrei poterlo confrontare con un altro (meno corposo ma pur sempre di 1000 e passa righe e verificarne eventuali occorrenze uguali...

    Sto parlando di file contenenti numeri intervallati da virgole del tipo

    1,2,3,4
    1,45,57,90
    ecc...

    Avrei anche necessità di contare le righe del file memorizzate

    Per adesso il cod è questo qui:

    codice:
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <vector>
    #include <algorithm>
    #include <sstream>
    #include <iomanip>
    
    
    using namespace std;
    
    int main (int argc, char *argv[]) {
    
    int length;
    char* buffer;
    int n=0;
    
    ifstream is("fileA.txt");
    is.seekg (0, ios::end);
    length = is.tellg();
    is.seekg (0, ios::beg);
    buffer = new char [length];
    is.read (buffer,length);
    is.close();
    
    cout << buffer;
    
    
    cout << "\nfinish!\n";
    cout << "\n\nRilevate ";
    //come faccio a mettere il numero di righe?
    
    //-----------------------------------------
    cout << " righe!";
    cin.get();
    
    //stessa cosa per il fileB.txt da confrontare...
    
    ifstream is2("fileB.txt");
    is2.seekg (0, ios::end);
    length = is2.tellg();
    is2.seekg (0, ios::beg);
    buffer = new char [length];
    is2.read (buffer,length);
    is2.close();
    
    cout << buffer;
    
    
    cout << "\nfinish!\n";
    cout << "\n\nRilevate ";
    //come faccio a mettere il numero di righe?
    
    //-----------------------------------------
    cout << " righe!";
    cin.get();
    
    
    }
    Grazie mille a chi mi aiuta a percorrere questa autostrada...


  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Utilizza un ciclo per controllare ogni singolo carattere di buffer e cerca quelli con valore esadecimale 0x0A. Conta quanti sono questi caratteri ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    sono riuscito a contare tutti i caratteri del fileA.txt da 2.000.000 di righe ca

    Originariamente inviato da oregon
    Utilizza un ciclo per controllare ogni singolo carattere di buffer e cerca quelli con valore esadecimale 0x0A. Conta quanti sono questi caratteri ...
    e sono esattamente:

    32.195.394

    ma ora?

    cosa intendi per "...cerca quelli con valore esadecimale 0x0A.." ???

  4. #4
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    sono anche riuscito a evidenziare a video e contare ogni singolo carattere...

    codice:
    	for (int i=0; i<fileDim; i++) {
                cout << "carattere: ";
                cout << buff[i];
                cin.get();
                }
    e adesso?


  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466

    Re: sono riuscito a contare tutti i caratteri del fileA.txt da 2.000.000 di righe ca

    Originariamente inviato da freetom

    cosa intendi per "...cerca quelli con valore esadecimale 0x0A.." ???
    Esattamente quello che ti ho scritto.
    Usa una if e conta i caratteri ASCII 0x0A ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    ce l'ho fatta!

    Grazie!

    codice:
    
      if (buff[i]==0x0A)  {
                                    
                  n++;                  
                 
    }                    
    }



    ps: E un aiutino per confrontare i buff[i] del primo fileA.txt con i buff[i] del secondo fileB.txt me lo daresti?

    Grazie 1000 comunque!


  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Troppa roba in un thread ... e' gia' confuso ...

    Aprine uno apposito ... e chiarisci cosa vuoi fare esattamente, magari con qualche esempio ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    forse ce la faccio anche a risolvere il secondo quesito....

    Mi servirebbe solo di sapere dove posso trovare tutti i valori esadecimali dei vari caratteri...

    In particolare adesso mi occorrerebbe il corrispondente esadecimale del carattere "," (virgola)

    THANKS!


  9. #9
    Osservazione inutile da purista: teoricamente sarebbe più corretto confrontare con '\n' più che con 0x0a.
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Giusto MItaly ...
    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.