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

    [C++]conversione di stringhe lette da file in float

    Salve a tutti!
    Ho un piccolo problema: ho creato una funzione in c++ che mi legge dei caratteri contenuti in un file e li salva all'interno di una stringa.La funzione dovrebbe anche convertire la stringa in un float ma usando la funzione atof non riesco più a compilare il sorgente.Potreste indicarmi una via alternativa?
    Grazie a tutti

  2. #2
    Perché cercare vie alternative senza affrontare il vero problema? :rollo: Che errore ti dà il compilatore?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Non conoscendo i dettagli implementativi, quindi non sapendo se realmente ti serve ottenere i valori come stringhe ti consiglio di leggerli direttamente come float:
    codice:
    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    int main(){
        float n;
        ifstream input("prova.txt",ifstream::out);
        if(!input.good()){
           cout << "errore nella lettura del file." << endl;
           return 1;
        }
        while(!input.eof()){
           input >> n;
           cout << n << endl;
        }
        input.close();
        return 0;
    }
    nel caso ti serva assolutamente leggerli come stringa e in seguito convertirli, ti consiglio di postare gli errori del compilatore e il codice in modo da poter capire dove sta il problema altrimenti serve la palla di vetro

  4. #4
    intanto grazie a tutti per i post...

    L'errore durante la compilazione è:" cannot convert `std::string' to `const char*' for argument `1' to `double atof(const char*)' "
    Ora ho capito male o una stringa e un array di caratteri sono la stessa cosa? Quindi quel "const char*" non dovrebbe essere il puntatore al primo elemento di un array di char?

    In effetti il problema sarebbe risolto se leggessi direttamente come float. Il fatto è, però, che la funzione legge un carattere alla volta (per identificare quale deve effettivamente trattare come float e quale no, visto che la stringa è alfanumerica) e alla fine concatena tutti i caratteri in modo da formare la stringa che poi deve essere convertita.

    spero che il post sia abbastanza chiaro altrimenti vedrò di postare la funzione in modo da rendervi la vita più facile. Thanks

  5. #5
    Allora credo di aver capito.
    Dovresti trovarti in una situazione simile:
    codice:
    #include <string>
    #include <cstring>
    #include <cstdio>
    #include <cstdlib>
    
    using namespace std;
    
    .....
    int main{
        ....
        string letto;
        float numero;
        ifstream file;
        /* Apertura file */
        file >> letto;
        numero = atof(letto);
    }
    il problema deriva proprio dal fatto che in c++ le stringhe possono essere o array di char o un oggetto di classe stringa, dall'errore sembra che tu stia usando l'oggetto stringa mentre atof accetta come parametro un array di char. Per ovviare al problema esiste il metodo di conversione della classe string:
    codice:
    numero = atof(letto.c_str());

  6. #6
    grazie mille problema risolto...
    grazie a tutti per l'aiuto!

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.