Problema conversione

di il
15 risposte

Problema conversione

Buonasera a tutto il forum.

Ho un problema con questa linea di codice
 int numeri=atoi(stringa[i])
Errore generato:
'int atoi(const char *)': impossibile convertire l'argomento 1 da 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' a 'const char *'
Ne ho fatte mille di queste oggi e solo con questo mi causa errore

15 Risposte

  • Re: Problema conversione

    Non ne puoi aver fatto mille perché è sbagliata.

    Se stringa[ i ] è un oggetto string devi scrivere

    numeri=atoi(stringa[ i ].c_str());
  • Re: Problema conversione

    Non capisco perché devo fare in questo modo...
  • Re: Problema conversione

    In ogni caso l'errore rimane.
    Ho dichiarato string stringa[MAX] e int numeri[MAX].

    E' la prima volta che mi capita...
  • Re: Problema conversione

    Succede perché utilizzi un tipo di dato string (classe string) mentre la funzione atoi utilizza un argomento di tipo char *

    E se numeri è un vettore (cosa non chiara dall'inizio) devi usare un indice
    
    numeri[i] = atoi(stringa[i].c_str());
    
    Leggi bene l'errore che hai.
  • Re: Problema conversione

    L'esercizio di prima l'ho fatto allo stesso identico modo e non restituisce alcun errore.


    'int atoi(const char *)': impossibile convertire l'argomento 1 da 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' a 'const char *'

    non esiste alcuna funzione di conversione da "std::basic_string<char, std::char_traits<char>, std::allocator<char>>" a "const char *"
  • Re: Problema conversione

    Inserendo quello che dici tu ottengo il seguente:


    l'elemento a sinistra di '.substr' deve avere una classe, struttura o unione

    l'espressione deve avere il tipo classe
  • Re: Problema conversione

    L'espressione completa è questa:
    numeri[i]=atoi(stringa[i].substr(10,12));
    ma sottolinea stringa.
  • Re: Problema conversione

    L'esercizio precedente è tale quale. Unica differenza uso stof per convertire la substring....
  • Re: Problema conversione

    Oregon ti ha suggerito c_str(), non substr(), e ti ha spiegato perché: atoi() riceve come parametro un puntatore a char, non un oggetto di classe string -- substr() restituisce un ulteriore oggetto di classe string, non un array di char.

    EDIT: stof() funziona così come dici perché stof() riceve tra i parametri un oggetto stringa, non un array di char.
  • Re: Problema conversione

    trixy ha scritto:


    L'esercizio precedente è tale quale. Unica differenza uso stof per convertire la substring....
    Certo che certe volte non rispondere ai post la soluzione migliore.

    Ti ho spiegato tutti. Se vuoi utilizzare atoi allora quella è la soluzione.

    Altrimenti utilizza stoi ma è un'altra storia.
  • Re: Problema conversione

    Penso di avere risolto.
    A quanto pare il problema stava in atoi…Devo usare stoi visto che ho una stringa…

    Almeno così mi sembra di capire
  • Re: Problema conversione

    Certo che certe volte non rispondere ai post la soluzione migliore.

    Ti ho spiegato tutti. Se vuoi utilizzare atoi allora quella è la soluzione.

    Altrimenti utilizza stoi ma è un'altra storia.

    Non ho capito cosa vuoi dire…
  • Re: Problema conversione

    Intendo dire che se non leggi le risposte è inutile risponderti.

    Tu hai usato atoi e ti ho detto come si usa. Come ti ho appena detto puoi usare stoi ed è uguale ma l'argomento è di tipo diverso.

    E non hai usato mille volte atoi con una string come dici perché ti avrebbe dato errore senza il metodo c_str()
  • Re: Problema conversione

    Non sono un esperto e non conosco tutto.
    Inizialmente dovevo convertire una stringa in float e, cercando in rete, avevo trovato stoi. Quando dovevo convertire in interi ho trovato atoi….non pensavo esistesse anche stoi e tantomeno sapevo i tipi di parametri che accetta l'una e l'altra…..
    La prossima volta starò più attento e vi ringrazio lo stesso
Devi accedere o registrarti per scrivere nel forum
15 risposte