convertir une std::string en type de base (int, float, etc)

convertir une std::string en type de base (int, float, etc) - C++ - Programmation

Marsh Posté le 11-08-2004 à 20:46:28    

Comment on fait, please ?
 
Ca doit etre surement très simple mais j'ai beau chercher sur le web, je ne trouve rien.  
A la base, j'avais plutot l'habitude d'utiliser les string du C (char*) et de convertir avec les fonctions 'atoi' et consort mais a force d'entendre les gens (hum...hum....Taz ?)dire qu'en C++ on doit utiliser les std::string... j'ai fini par ceder !
 
Alors, on fait comment, svp ?

Reply

Marsh Posté le 11-08-2004 à 20:46:28   

Reply

Marsh Posté le 11-08-2004 à 20:52:02    

Code :
  1. #include <sstream>
  2. #include <string>
  3. template<typename T>
  4. inline bool valueOf(const std::string &s, T &obj)
  5. {
  6.   std::istringstream is(s);
  7.   return is >> obj;
  8. }
  9. #include <iostream>
  10. int main()
  11. {
  12.   int i;
  13.   std::cout << valueOf("42", i) << '\n'
  14.     << i << '\n';
  15. }


 
ou pourquoi pas en lançant une exception

Reply

Marsh Posté le 11-08-2004 à 20:56:19    

C'etait tout simple, merci !

Reply

Marsh Posté le 11-08-2004 à 20:59:26    

note sur ma version. le typage est fait grâce au deuxième paramètre et la fonction retourne un booléen indiquant le succès de la converstion.
 
si on avait eu T valueOf(const std::string&s), il aurait fallut faire le traitement d'erreur par exception et ça serait utiliser de la sorte « int i = valueOf<int>("42" ) »

Reply

Marsh Posté le 11-08-2004 à 21:00:19    

fykman a écrit :

C'etait tout simple, merci !

Moi je vois surtout que c'est sécurisé.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed