Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    141

    [ c++ ] leggere n caratteri da file

    ho fatto una ricerca tra i post gia esistenti ... am non ho trovato risposta al mio problema.

    come faccio a leggere da un file dati.txt :
    - un numero preciso di caratteri ???
    - e leggere fino a quando non trovo un ';'
    e memorizzare quello che ho letto in una stringa

    ho provato con READ e con GET ma mi danno pagine e pagine di errore ... quindi ho provato a chiedere a voi ...

    codice:
    //mi sposto all'inizio del file
    file.seekg(ios::beg);
    string c;
    file >> c;
    string prova=get( file,4,';');
    
    // leggo 4 caratteri o fermati quando trovi ';'

    GRAZIE e buon Natale

  2. #2
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    potresti mettere tutto in un array e leggere quello:

    codice:
    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    const char * filename = "a.txt";
    
    int main () {
      char * buffer;
      long size;
      ifstream file (filename, ios::in|ios::binary|ios::ate);
      size = file.tellg();
      file.seekg (0, ios::beg);
      buffer = new char [size];
      file.read (buffer, size);
      file.close();
    
      //ora è tutto nell'array buffer, quindi:
    
      for(register int i = 0; i < 4; i++) {//leggi 4 caratteri
    	  if(buffer[i] == ';') break;// se è un ; esci
    	  else
    		  cout << buffer[i];//sennò scrivi
      }
    
    
    
      delete[] buffer;
      return 0;
    }
    e auguri!
    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    173
    codice:
    #include <iostream.h>
    #include <fstream.h>
    
    int main()
    {
        fstream myFile("dati.txt");
        char c[20];
        
        myFile.get(c,5,';');
        cout<<""<<c<<endl;
        return 0; 
    }
    Così dovrebbe andare!
    In c++ a meno che non fai una definizione di tipo non esiste il tipo string, esistono i vettori di caratteri, che vengono trattati in modo speciale, in quanto considerati come stringhe. Inoltre get() è un medoto della classe di stream, che può essere quello standard (da tastiera, cin o verso lo schermo cout) oppure un flusso su file (fstream). Ricorda inoltre che per leggere effettivamente 4 caratteri ne devi aggiungere 1 per lo \0 carattere terminatore dfi stringa

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    Vedo che già avete risposto. Comunque, già che ci siamo:
    codice:
    #include <fstream>
    #include <iostream>
    using namespace std;
    
    int main()
    {
    	ifstream prova("fstreams.txt");
    	
    	char buf[5];
    	
    	while(!prova.eof())
    	{
    		prova.get(buf, 5, ';');
    		if (prova.peek()==';') prova.ignore();
    		cout << buf;
    	}
    	
    	return 0;
    }
    Con questo leggi tutto il file in pezzi di 4 caratteri (o più piccoli se capita il simbolo ';').

  5. #5
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    Originariamente inviato da eagle_fly
    ...
    In c++ a meno che non fai una definizione di tipo non esiste il tipo string
    ...
    La classe string esiste nel header string del namespace std, il fatto è che get non ritorna e non accetta un oggetto string.

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    141
    GRAZIE a entrambe

    ho scelto la seconda soluzione ... perche il codice è piu compatto ... visto che ho un programma gia di migliaia di righe.


    avrei necessita di passarlo a una string ... poiche ho costruito delle classi che sono costriute con una string

    come potrei fare ?

    un altro paio di domande visto che mi sembrate molto afferrati sull' argomento :

    - per spostarmi dalla prima alla seconda riga del file come faccio ?


    ANCORA GRAZIE

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    Allora, per trasferirlo ad una string fai:
    codice:
    #include <string.h>
    #include <iostream.h>
    #include <fstream.h>
    
    int main()
    {
        string str;
        fstream myFile("dati.txt");
        char c[20];
        
        myFile.get(c,5,';');
        str = c;
        cout<<""<<str<<endl;
        return 0; 
    }
    Poi, per saltare una riga, se le tue linee finiscono con un newline ti basta fare:
    codice:
    myFile.ignore(80, '\n');
    Ricordati che il get non estrae il delimitatore dalla stream. Questo vuol dire che prima di effettuare di nuovo un get con lo stesso delimitatore devi fare un:
    codice:
    myFile.ignore();
    Per scartare il carattere successivo.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    141
    grazie mille ... ora provo sistemare il tutto ... grazie MOLTO GENTILI

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    141
    ulteriore domanda...

    io ho una stringa su file di questo tipo :

    123,124,125,...

    codice:
    int a;
    file.get(c,20,',');
    	.... = c ;
    come faccio a portarlo da char ad int ???

  10. #10
    Utente bannato
    Registrato dal
    Dec 2004
    Messaggi
    27
    potresti leggere il codice ASCII della stringa e poi portare i corrispondenti numeri in un'array

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 © 2025 vBulletin Solutions, Inc. All rights reserved.