Bonjour,
je souhaiterais convetir une strings selon son type exemple : "11.4" avoir un float nommé value = 11.4;
pareil pour les int...
une sorte d'equivalant de atoi en c.
Bonjour,

ce type de question dépasse Fedora, il y a des forums de développement plus appropriés.
Néanmoins, atoi() comme atof() sont bien utilisables en C++, évidemment (#include <cstdlib>)...
n'y a t-il pas des fonction de la lib c++ qui propose le même comportement??
Ruxob wrote:n'y a t-il pas des fonction de la lib c++ qui propose le même comportement??
Pourquoi un tel impératif ?
je n'ai pas le droit d'utiliser les fonction de la lib c.
Ruxob wrote:je n'ai pas le droit d'utiliser les fonction de la lib c.
Tu as dû faire une grosse bêtise pour mériter une telle punition.
Vois du côté de la bibliothèque sstream alors, elle est propre à la STL et est largement documentée sur le réseau.
Il suffit tout simplement de faire ce que l'on appel un cast ce qui veux dire que pour transformer ta valeur inutile d'utiliser une bibliothèque il te suffit juste de faire value = float(11.4).
Maxime Tierre wrote:Il suffit tout simplement de faire ce que l'on appel un cast ce qui veux dire que pour transformer ta valeur inutile d'utiliser une bibliothèque il te suffit juste de faire value = float(11.4).
Relire mieux la problématique : on cherche à convertir une chaîne en entier/flottant.
Pikachu_2014 wrote:
Maxime Tierre wrote:Il suffit tout simplement de faire ce que l'on appel un cast ce qui veux dire que pour transformer ta valeur inutile d'utiliser une bibliothèque il te suffit juste de faire value = float(11.4).
Relire mieux la problématique : on cherche à convertir une chaîne en entier/flottant.
C'est justement ce que fait cette ligne de code, il suffit juste de remplacer le 11.4 par le nom de sa variable. Le casting force la conversion s'il veut la convertir en entier il peut utiliser value = int(variable) et s'il veut la transformer en nombre réel il peut utiliser float, long voir même unsigned long ou unsigned float. Je n'est pas programmer de puis longtemps mais j'ai quand même de bon souvenir de mon BTS info indus.
sauf que 11.4 est pas une chaine (c'est pas une string)
si c'en est une au pire tu fais string variable = "11.4" ou alors value = float("11.4"). De toute façon le type de la variable attendue lors d'un caste est de type void donc peux importe ce que tu mets entre parenthèse le cast tenteras toujours de convertir en float (ou autre)
Maxime Tierre wrote:si c'en est une au pire tu fais string variable = "11.4" ou alors value = float("11.4"). De toute façon le type de la variable attendue lors d'un caste est de type void donc peux importe ce que tu mets entre parenthèse le cast tenteras toujours de convertir en float (ou autre)
:-o
Es-tu sûr d'avoir fait du C++ ?
Maxime si tu fais ce que tu dis, tu auras une erreur:
invalid cast from type 'std::string' to type 'float'
Je ne suis pas expert en c++, mais il me semble que les cast vers un type primaire ne peut pas se faire directement à partir d'une instance de classe (car string n'est pas un type primaire, mais bien une classe)
À la limite, on aurait pu faire un cast d'un pointeur sur char (donc char *, permettant de représenter les chaines en C, que l'on peut utiliser en c++). Mais on aurait ainsi soit un float représentant l'adresse pointé par le pointeur, soit le code ascii en float du caractère de la case mémoire pointée selon comment on fait le cast. En aucun cas la valeur représenté par la chaine en float.