Convertir une chaine de caractère

[Résolu]
Signaler
Messages postés
41
Date d'inscription
jeudi 8 avril 2010
Statut
Membre
Dernière intervention
28 juin 2014
-
Messages postés
41
Date d'inscription
jeudi 8 avril 2010
Statut
Membre
Dernière intervention
28 juin 2014
-
Bonjour,
peut-on convertir une chaine de caractères(string) en un entier(int)? Si oui, comment le programmer?

8 réponses

Messages postés
361
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
19 mars 2015

int atoi ( const char * str );

si ta chaine est bien un entier entre guillemets
Messages postés
41
Date d'inscription
jeudi 8 avril 2010
Statut
Membre
Dernière intervention
28 juin 2014
1
pourrait-tu expliquer à quoi correspond const char * str? Si ma chaine de caractères est contenue dans une variable comment utiliser atoi?
Messages postés
3833
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
124
Oula, non pas besoin de atoi, qui est un vieux reliquat du C.

En C++, on utilise les stringstream ! Un très bon exemple:
http://cpp.developpez.com/faq/cpp/?page=strings#STRINGS_convert_to

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
276
Date d'inscription
lundi 8 septembre 2008
Statut
Membre
Dernière intervention
15 avril 2013
2
Bonjour,

atoi est peut-être un vieux reliquat de C, mais ça a le mérite de marcher sans écrire plusieurs lignes de code. Et j'imagine que c'est probablement plus performant !
Messages postés
41
Date d'inscription
jeudi 8 avril 2010
Statut
Membre
Dernière intervention
28 juin 2014
1
J'ai essayé stringstream ça fonctionne. Comment fait-on avec atoi ? En ce qui me concerne, le fait que atoi soit ou non un reliquat du language C ne me gêne pas du moment que ça marche.
Messages postés
3833
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
124
Si ma méthode fonctionne, conserve là. L'avantage des stringstream est important.

Exemple: int i atoi("0") donnera 0, int i atoi("nimportequoi") donnera aussi 0.
Comment tu différencies un atoi qui a raté, d'un atoi qui donne vraiment 0 ?

Avec le from_string:
int i;
if (from_string("0", i))
{
 std::cout << "Conversion réussi: " << i <<std::endl;
}

int i;
if (from_string("nimportequoi", i))
{
 std::cout << "Conversion raté, impossible de convertir" <<std::endl;
}


De plus, la méthode from_string, fonctionne avec tout, que ce soit des entiers, des float ou mêmes des doubles. Ce n'est pas le cas d'atoi qui ne fonctionnera qu'avec des entiers.

Ce n'est pas pour rien que les stringstreams ont été crée en C++ ;)

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
3833
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
11 juin 2021
124
Il manque un "!" dans mon exemple:

int i;
if (!from_string("nimportequoi", i))
{
 std::cout << "Conversion raté, impossible de convertir" <<std::endl;
}


________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
41
Date d'inscription
jeudi 8 avril 2010
Statut
Membre
Dernière intervention
28 juin 2014
1
Merci pour vos aides.