Domanda su stringhe, double, l'universo e tutto quanto

di il
6 risposte

Domanda su stringhe, double, l'universo e tutto quanto

Il mio problema è questo: dato un file fatto più o meno così

Begin
....
.7.235...8.9345
.....pinco pallino è alto 1.82
...
..8.345..
...
end
Begin
...34.345..
...
....tizio è alto 1.68

e così via io devo leggere il numero che mi viene dato dall' utente (un double appunto) e devo cercarlo nel file con una variazione di +/- 0.01 quando segue la dicitura "è alto". Se trovo questo numero che segue le parole "è alto" allora devo mettere in output tutto il "paragrafo" che lo contiene che va da begin fino ad end.
Per il momento sto sviluppando un codice che dato il numero dell'utente produce tre numeri (il numero stesso, quello aumentato e quello diminuito di 0.01) e trasforma questi numeri in tre stringhe di caratteri. Il mio progetto è quello di leggere ogni "paragrafo come array di stringhe e utilizzare la funzione find delle stringhe per individuare la dicitura "è alto x.xx" con tutti e tre i numeri generati. Le mie domande sono
1) Con uno static_cast posso trasformare un array di caratteri in una stringa?
2) C'è un modo più facile per fare tutto questo, ad esempio mantenendo i numeri senza trasformarli in array di caratteri e utilizzando semplicemente la funzione fabs per lo scarto?
3) Se si potesse fare come faccio a recuperare il testo precedente alla dicitura ( da "begin" fino a "è alto tot" visto che è già stato letto?

6 Risposte

  • Re: Domanda su stringhe, double, l'universo e tutto quanto

    Non c'è bisogno dello static_cast. con string::assign puoi copiare l'array nella stringa.
    Una volta che hai tutto nella stringa con find trovi la posizione dove dice "è alto"; poi saprai che da string::begin a pos (pos è ciò che ti ha dato find) avrai i caratteri fino alla lettere "è" e da pos a string::end la parte restante. con std::stod trasformi la stringa in double.
  • Re: Domanda su stringhe, double, l'universo e tutto quanto

    Prima di tutto grazie mille per la risposta. In seconda battuta: dove posso trovare tutte queste funzioni(come assign e stod) che mi nomini che sul mio libro non trovo?In terza battuta: quindi mi stai consigliando comunque ti leggere il file da begin a end come un array di stringhe giusto?
  • Re: Domanda su stringhe, double, l'universo e tutto quanto

    Tra l'altro il mio compilatore non supporta la funzione stod
  • Re: Domanda su stringhe, double, l'universo e tutto quanto

    Allora puoi usare atof nella forma atof(string::c_str()).
    Non dico di leggere tutto il file in array di caratteri ma di leggerlo a porzioni se sai il blocco quant'è lungo.Altrimenti leggi tutto e spezzetti tra un begin e un end.
  • Re: Domanda su stringhe, double, l'universo e tutto quanto

    Ho provato a testare la funzione così ma mi dà errore il compilatore
    #include <iostream>
    #include <string>
    #include <cstdlib>
    
    using namespace std;
    
    double myDoubleVar;
    
    int main()
    {
        string sr;
        cout << "inserire:";
    
        cin >> sr;
    
        myDoubleVar=atof(string::c_str(sr));
    
        cout << endl << myDoubleVar;
    
        return 0;
    }
    
  • Re: Domanda su stringhe, double, l'universo e tutto quanto

    Non

    string::c_str(sr)

    ma

    sr.c_str()
Devi accedere o registrarti per scrivere nel forum
6 risposte