La bibliothèque standard C ++ définit-elle cette fonction ou dois-je recourir à Boost?
J'ai cherché sur le Web et je n'ai rien trouvé à part Boost, mais j'ai pensé que je ferais mieux de demander ici.
La bibliothèque standard C ++ définit-elle cette fonction ou dois-je recourir à Boost?
J'ai cherché sur le Web et je n'ai rien trouvé à part Boost, mais j'ai pensé que je ferais mieux de demander ici.
En partie seulement.
C++11 <string>
a std::to_string
pour les types intégrés:
[n3290: 21.5/7]:
string to_string(int val); string to_string(unsigned val); string to_string(long val); string to_string(unsigned long val); string to_string(long long val); string to_string(unsigned long long val); string to_string(float val); string to_string(double val); string to_string(long double val);
Retourne: Chaque fonction renvoie un
string
objet la tenue de la caractère de la représentation de la valeur de son argument qui serait être générée par l'appel desprintf(buf, fmt, val)
avec un format spécificateur de"%d"
,"%u"
,"%ld"
,"%lu"
,"%lld"
,"%llu"
,"%f"
,"%f"
ou"%Lf"
, respectivement, oùbuf
désigne un caractère interne de la mémoire tampon de taille suffisante.
Il y a également les éléments suivants qui vont dans l'autre sens:
[n3290: 21.5/1, 21.5/4]:
int stoi(const string& str, size_t *idx = 0, int base = 10); long stol(const string& str, size_t *idx = 0, int base = 10); unsigned long stoul(const string& str, size_t *idx = 0, int base = 10); long long stoll(const string& str, size_t *idx = 0, int base = 10); unsigned long long stoull(const string& str, size_t *idx = 0, int base = 10); float stof(const string& str, size_t *idx = 0); double stod(const string& str, size_t *idx = 0); long double stold(const string& str, size_t *idx = 0);
Cependant, il n'y a rien de générique que vous pouvez utiliser (au moins pas jusqu'à ce que TR2, peut-être!), et rien du tout en C++03.
Non, même en C ++ 11, mais il est proposé de l'inclure dans le rapport technique 2, le prochain jeu d'extensions de bibliothèque std.
Il n'y a pas de std :: lexical_cast, mais vous pouvez toujours faire quelque chose de similaire avec stringstreams :
template <typename T>
T lexical_cast(const std::string& str)
{
T var;
std::istringstream iss;
iss.str(str);
iss >> var;
// deal with any error bits that may have been set on the stream
return var;
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.