OVH Cloud OVH Cloud

atoi, atof

3 réponses
Avatar
Guillaume Gourdin
Existe t'il un équivalent c++ pour ces fonctions ? Réciproquement, peut-on
ecrire 'string s = 1.0f;' ?

Merci.

3 réponses

Avatar
Fabien LE LEZ
On Wed, 7 Jan 2004 14:56:47 +0100, "Guillaume Gourdin"
wrote:

Existe t'il un équivalent c++ pour ces fonctions ?


Honnêtement, je trouve que le plus facile à utiliser dans ces deux cas
est sscanf().

Réciproquement, peut-on
ecrire 'string s = 1.0f;' ?


Non. La syntaxe correcte est dans la FAQ, que tu trouveras ici :
<http://www.google.com/search?q=fr.comp.lang.c%2B%2B+faq>

--
;-)

http://www.gotw.ca/gotw/063.htm
http://www.gotw.ca/gotw/067.htm#2

Avatar
M. B.
"Fabien LE LEZ" a écrit dans le message de news:

On Wed, 7 Jan 2004 14:56:47 +0100, "Guillaume Gourdin"
wrote:


Honnêtement, je trouve que le plus facile à utiliser dans ces deux cas
est sscanf().



Comme quoi, les bonnes vieilles fonctions du C, des fois ...

MB

Avatar
kanze
Fabien LE LEZ wrote in message
news:...
On Wed, 7 Jan 2004 14:56:47 +0100, "Guillaume Gourdin"
wrote:

Existe t'il un équivalent c++ pour ces fonctions ?


Honnêtement, je trouve que le plus facile à utiliser dans ces deux cas
est sscanf().


Tu trouves que :
sscanf( buffer, "%d", &unInt ) ;
plus facile à utiliser que :
unInt = atoi( buffer ) ;
?

Sans parler des histoires d'erreur de type -- si quelqu'un change unInt
en short, tu risques fort avec sscanf, avec atoi, la seule risque dans
la pratique, c'est que la valeur serait fausse, s'il y a débordement.
(Et on peut espérer que si quelqu'un change unInt en short, c'est qu'ils
ont fait assez d'analyse pour être certain que les valeurs y tiennent.)

En fait, il existe des fonctions exactement équivalentes à atoi et atof
en C++. Elles se trouvent dans l'en-tête <cstdlib>, et s'appelle
std::atoi et std::atof. Mais je me pose la question si on veut vraiment
une équivalente aussi exacte si on veut faire du C++ idiomatique.

Réciproquement, peut-on ecrire 'string s = 1.0f;' ?


Non. La syntaxe correcte est dans la FAQ, que tu trouveras ici :
<http://www.google.com/search?q=fr.comp.lang.c%2B%2B+faq>


Curieusement, si :
std::string s = 1.0f ;
n'est pas légal,
std::string s ;
s = 1.0f ;

l'est. Mais j'ai comme un vague soupçon que la sémantique n'en est pas
ce qu'il veut. (Étant donné qu'il n'a pas précisé ce qu'il veut comme
sémantique, et qu'il y en a plusieurs de raisonable, c'est difficile à
dire. Mais la sémantique que la norme donne à l'affectation n'est pas
AMHA parmi les plusieurs raisonables.)

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16