Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    100

    leggere da file solo ultima riga C++

    Salve, come da titolo, è possibile leggere da un file solo l ultima riga?
    come devo fare?

    ifstream f("temp.txt");
    string s;
    int k;

    getline(f, s);
    k=atoi(s.c_str()+27);

    è possibile spostare il puntatore fino all ultima riga?
    mi interessa il 27esimo carattere dell'ultima riga di un file.
    Il file non ha una dimensione fissa perchè ogni volta che viene richiamata la funzione, crea un altro file di dimensione diversa ma di cui mi interessa comunuqe solo il 27esimo carattere dell ultima riga.

    Grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    225

    Re: leggere da file solo ultima riga C++

    Originariamente inviato da lorty


    è possibile spostare il puntatore fino all ultima riga?
    Grazie.
    è possibile farlo, posizioni il cursore alla fine del file con seek e vai indietro del numero di caratteri che desideri, o fino a che non trovi il carattere di nuova riga
    ciao
    sergio

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    100
    come faccio ad andare indietro?
    hai per caso un Howto per usare seek che non riesco a trovare granchè su internet?
    grazie.

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    225
    usa la funzione membro di ifstream
    http://www.cplusplus.com/reference/i...istream/seekg/

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    225
    studiati anche la funzione membro getline, ricordati che con fstream crei una istanza di un oggetto, non ottiene direttamente un file pointer.
    http://www.cplusplus.com/reference/i...tream/getline/

    ciao
    sergio

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    100
    Ciao, ho provato a fare una cosa del genere:

    #include <iostream>
    #include <fstream>
    #include <stdlib.h>
    #include <stdio.h>
    #include <cstring>
    #include <string>
    #include <sstream>

    using namespace std;

    int main ()
    {
    char s;
    FILE * pFile;
    pFile = fopen ( "example.txt" , "w" );
    fputs ( "@@@@@@@@@@@@@@@@@" , pFile );
    fseek ( pFile , 1 , SEEK_SET );
    fscanf (pFile, "%c", &s);
    cout << "ciao"<<s <<endl;
    fclose ( pFile );
    return 0;
    }

    ma stampa solo:
    ciao
    come se in s non ci fosse nulla. Forse uso male la scanf? con getline invece di scanf dava questo errore:

    prova.cpp: In function ‘int main()’:
    prova.cpp:18: error: no matching function for call to ‘getline(FILE*&, char&)’
    /usr/include/stdio.h:649: note: candidates are: __ssize_t getline(char**, size_t*, FILE*)

    perchè faccio FILE * pFile invece di ifstream pFile("example").

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    225
    se vuoi puoi usare un file pointer che apri con fopen (lo devi però fare in modalità anche read) se però vuoi imparere il C++ è meglio se usa fstream.
    Riguardati e studiati il link che ti ho postato
    ciao
    sergio

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    100
    Ma secondo te perchè non inserisce niente in s?

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    100
    ok ho risolto, invece di "w" ci vuole "r"

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    100
    Scusa un ultima domanda:

    come posso inserire degli interi nel nome del file al posto di fn.str() e gn.str() ?

    se faccio:

    stringstream fn;
    stringstream gn;

    n=0;
    p=1;
    fn.str("");
    gn.str("");

    fn << n;
    gn << p;

    file= "trans_nodi"+fn.str()+"run"+gn.str()+".txt";

    mi dice:

    lettura_dati.cpp:19: error: aggregate ‘std::stringstream fn’ has incomplete type and cannot be defined
    lettura_dati.cpp:20: error: aggregate ‘std::stringstream gn’ has incomplete type and cannot be defined

    dove sbaglio?

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.