Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [C++]come assegnare il contenuto di un file ad una variabile float?

    Ciao a tutti! Sono nuovo in questo forum e, come avrete occasione di arguire, sono un novellino anche per quato riguarda il C++.
    Sto scrivendo un codice ma non so come proseguire. Ora vi espongo il mio problema, spero possiate darmi una mano.

    Il programma che sto crivendo ad un certo punto chiede all'utente di inserire un'espressione matematica che verrà salvata all'interno di un file con esetensione .txt. Per questa operazione ho usato una funzione della libreria <fstream>. Dopo alcuni passaggi ho la necessità di assegnare ciò che è contenuto in quel file ad una variabile di tipo float. Io ho provato a prendere quel contenuto tramite il comando
    Codice PHP:
    ifstream g("funzione.txt");
    string s;
    getline (g,s);
    g.close(); 
    e in effetti dopo questo passaggio la stringa s contiene l'espressione che mi interessa. La domanda è: come posso assegnare questo contenuto ad una variabile numerica? Sul web ho trovato molte guide che spiegano come convertire un carattere in un numero, ma in ogni caso si parlava di rappresentazioni di numeri (ad esempio trasformare il carattere '2.1' in un tipo float).

    p.s. Il contenuto del file .txt è sempre una espressione con variabili già dichiarate e assegnate in precedenza. Ad esempio potrebbe esserci: (a*3)/a, dove 'a' è una variabile valida.

    Grazie!!
    Ultima modifica di glimpsyd; 25-11-2014 a 14:10

  2. #2
    Ciao, hai due possibilità

    Usare sstream
    Oppure la atof() (tipica del C)

    Ma se vuoi valutare una espressione il discorso si complica
    Ultima modifica di Samuele_70; 25-11-2014 a 19:36
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  3. #3
    Grazie Samuele per la risposta. Avevo già provato ad usare a funzione atof() di stdlib.h.
    L'ho usata in questo modo:

    Codice PHP:
        ifstream g("funzione.txt");
        
    string s;
        
    getline (g,s);
        
    g.close();
        
    float x=atof(s);
        
    cout<<x
    In fase di compilazione il terminale mi dà questo messaggio di errore:

    esercizio1.cpp: In function ‘int main()’:
    esercizio1.cpp:63:16: error: cannot convert ‘std::string {aka std::basic_string<char>}’ to ‘const char*’ for argument ‘1’ to ‘double atof(const char*)’
    float x=atof(s);
    ^

    Credo che non si possa fare questo tipo di conversione perché i caratteri contenuti nel file non sono numerici.
    Quel che vorrei fare è una cosa del tipo:
    float x= "espressione contenuta nel file"
    Ultima modifica di glimpsyd; 25-11-2014 a 19:53

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Tu vuoi valutare un'espressione quindi le funzioni in questione non ti servono ... (tra l'altro dovevi scrivere atof(s.cstr()) )

    La valutazione delle espressioni è affare abbastanza complesso ... puoi dare un'occhiata in giro (google) per rendertene conto.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Grazie oregon. potresti gentilmente linkarmi qualche pagina dove si parla di questo tipo cose? Altreimenti cosa dovrei scrivere sul motore di ricerca? Ho cercato molto sul web ma non sono riuscito a trovare nessuna pagina nella quale si tratta un quache problema assimilabile a questo.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    La atof() è una funzione della libreria standard del C non puoi passargli una stringa del C++, non in modo diretto almeno, ma è sufficiente ricorrere all'apposita funzione membro .c_str().

    risolvere espressioni c++
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

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.