Problema conversione

di Anonimizzato22615 il
15 risposte
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

  • Non ne puoi aver fatto mille perché è sbagliata.

    Se stringa[ i ] è un oggetto string devi scrivere

    numeri=atoi(stringa[ i ].c_str());
  • Non capisco perché devo fare in questo modo...
  • In ogni caso l'errore rimane.
    Ho dichiarato string stringa[MAX] e int numeri[MAX].

    E' la prima volta che mi capita...
  • 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.
  • 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 *"
  • 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
  • L'espressione completa è questa:
    numeri[i]=atoi(stringa[i].substr(10,12));
    ma sottolinea stringa.
  • L'esercizio precedente è tale quale. Unica differenza uso stof per convertire la substring....
  • 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.
  • 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.
  • 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
  • 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…
  • 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()
  • 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