Convertir un uint64_t à std::string
Comment puis-je transférer un uint64_t valeur à std::string?
J'ai besoin de construire un std::string contenant cette valeur
Par exemple quelque chose comme ceci:
void genString(uint64_t val)
{
std::string str;
//.....some code for str
str+=(unsigned int)val;//????
}
Merci
- Sur Windows (MSVC), vous pouvez utiliser le
%I64d
spécificateur de format lors de l'utilisation destd::sprintf
- compte tenu de ce qui est clairement C++ j'avais conseille fortement de le garder bien à l'écart de
sprintf
, en particulier avec les non-portable extensions.
Vous devez vous connecter pour publier un commentaire.
utiliser
boost::lexical_cast
oustd::ostringstream
par exemple:
ou
#include <boost/lexical_cast.hpp>
ou#include <sstream>
selon la solution que vous utilisez.En C++ 11, tu peux simplement utiliser:
il est défini dans l'en-tête
http://www.cplusplus.com/reference/string/to_string/
Je utiliser quelque chose comme le code ci-dessous. Parce que c'est un modèle, il fonctionne avec n'importe quel type de supports de l'opérateur<< pour un flux.
par exemple
static
si vous voulez ajouter un peu plus d'efficacité.n
àn + 21
?static
rend régulièrement (un peu) plus lent (plus de l'erreur) sur les 100 répétitions de 10 000 000 d'appel de la boucle. Semble prématuré d'optimisation pour moi. La principale chance dans la version locale estsubl $72, %esp
vssubl $52, %esp
, un O(1) variation.%z
est correct - je obtenirtest.cc:10:29: warning: conversion lacks type at end of format
ettest.cc:10:29: warning: too many arguments for format
avec gcc