Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    leggere un numero in un file. C++

    Salve,
    sto cercando di scrivere un programma in C++, o anche C, che mi apra un file.dat dove vi dove su ogni riga vi sono 8 valori numerici.
    Sono riuscita ad aprire il file e a leggere l'intera stringa di numeri, ma non riesco a capire come dirgli di leggere solo il numero che si trova sulla prima riga settima colonna e ottava colonna, e poi passare alla riga successiva fino alla fine del file.
    In tutto ciò ogni volta che mi legge il settimo e l'ottavo numero devo fare dei calcoli e poi passare alla riga successiva.
    Allego il pezzo di codice che ho scritto finora e che mi permette di leggere una riga di numeri.
    Grazie
    Codice PHP:
    #include <iostream>
    #include <fstream>
    using namespace std;

    //Definisco dei parametri facilmente modificabili
    #define MAX_LINES 10
    #define MAX_LINE_LEN 50


    int main(int argcchar *argv[])
    {
       
    //Dichiaro l'array di stringhe in cui andranno i dati del file
       
    char strings[MAX_LINES][MAX_LINE_LEN];
       
    //Apro il file
       
    ifstream in("configurazione_Pace0.dat");
      
       
    int j 0;
       
      
    //Ciclo che recupera i dati del file riga per riga e li mette in strings
       
    while ( in )
         {
                  
    in.get(strings[j++], MAX_LINE_LEN);
          }
      
      
    cout << strings[0] << endl;
        
       return 
    0;


  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Se il file ha delle righe a lunghezza variabile, devi leggerle una per una, contandole, per sapere quando c'e' quella che ti serve ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    la riga non è variabile, io devo cercare di prendere gli ultimi due valori della riga e farmeli stampare singolarmente.
    Grazie

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    La riga non e' variabile cosa vuol dire ?

    Io parlavo della lunghezza ...

    Puoi fare un esempio ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    se tutte le righe del tuo file di testo hanno lo stesso numero di caratteri allora ti puoi calcolare la posizione esatta e puoi usare il metodo seekg per spostarti all'interno del file senza leggerlo tutto.
    ciao
    sergio

  6. #6
    Forse non ho capito la tua risposta, e quindi non ti ho risposto bene.
    questo è un esempio delle righe del file che devo leggere:
    100 120 130 110 110 887.764 14.3131 765.5683
    100 120 130 110 125 966.691 14.3588 769.4249
    100 120 130 110 140 1046.87 14.2880 768.8951
    100 120 130 110 155 1130.48 14.1807 766.0896
    100 120 130 110 170 1220.06 13.9247 752.6499
    100 120 130 125 110 851.479 14.2997 760.8714
    100 120 130 125 125 925.64 14.4178 771.0640
    .......
    I numeri che mi interessano sono solo gli ultmi due, cioè devo prendere per ogni riga le ultme due colonne.
    Ora io non so come fare a prendere solo questi due valori.
    Grazie

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Originariamente inviato da mondobimbi
    se tutte le righe del tuo file di testo hanno lo stesso numero di caratteri allora ti puoi calcolare la posizione esatta e puoi usare il metodo seekg ...
    Esattamente quello a cui volevo arrivare, se solo si capisse come sono fatte queste linee ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Ho usato la funzione seekg()
    .....
    e come uscita mi ha dato tutto il file.....
    Ma io volevo solo un numero.....
    char ch;
    ifstream in("configurazione.dat");

    in.seekg(atof(argv[2]),ios::beg);
    while (in.get(ch))
    cout << ch;

  9. #9
    niente seekg.
    Se hanno lo stesso numero di campi allora puoi utilizzare la classe istringstream.
    Leggi ciascuna riga del file e la dai in pasto a un oggetto istringstream

    codice:
    ...
    
    string riga;  // la riga che leggo dal file
    
    istringstream stream (riga,istringstream::in);
    
    // supponiamo che ci siano 5 numeri reali
    
    float f1, f2, f3, f4, f5;
    
    stream >> f1 >> f2 >> f3 >> f4 >> f5;
    
    // in f4 e f5 ho gli ultimi due
    spero che sia giusto

    ciao

  10. #10
    Originariamente inviato da AMRITA1979
    Ho usato la funzione seekg()
    .....
    seekg la puoi usare solo se hai righe dello stesso numero di caratteri, altrimenti non ti serve a niente.
    ciao
    sergio

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.