Lettura da file di una riga n

di il
2 risposte

Lettura da file di una riga n

Salve gente ...
io dovrei leggere da un file di testo la riga n ... ma nn so come fare chi mi aiuta??
per esempio su un file di 50 righe voglio leggere solamente la riga 28 ... come faccio??

thank

2 Risposte

  • Re: Lettura da file di una riga n

    La prima cosa che mi viene in mente:
    
    #include <iostream>
    #include <string>
    #include <fstream>
    
    using namespace std;
    
    in main() {
     ifstream in("in");  
      char t;
      int cont=1;
      string s_riga;
      int i_riga;
      
      cout << "Riga da leggere: "; cin >> i_riga;
    
      while(cont < i_riga) {
        in.get(t);
        if(t == '\n') cont++;
      }
    
      while (in.get(t), t!= '\n') s_riga.push_back(t);
    
      cout << s_riga << "\n";
    }
    
    Chiaramente c'è lo stretto necessario ,senza neanche un controllo.
    Non credo sia granchè efficente però, visto che comunque leggi sequenzialmente fino alla riga che desideri.
  • Re: Lettura da file di una riga n

    Se le righe fossero tutte di pari lunghezza, potresti sempre piombare sulla n-sima sapendo che si trova a byte_riga *( n-1); cioè se le righe sono 50byte e vuoi leggere la 3a, ti posizioni con la lettura binaria leggendo prima un blocco da 50 * (3-1) = 100byte a quel punto sai che i prossimi 50byte sono proprio la riga che stai cercando.
    Va saputo se la riga termina con i CR/LF ecc.. insomma vacci di lettura binaria, altrimenti l'unica altra soluzione è quella già proposta, cioè la lettura sequenziale riga riga.
Devi accedere o registrarti per scrivere nel forum
2 risposte