Comment convertir de std::ssortingngstream
en std::ssortingng
en C ++?
Dois-je appeler une méthode sur le stream de chaînes?
yourSsortingngStream.str ()
Utilisez la méthode .str () :
Gère le contenu de l’object chaîne sous-jacent.
1) Retourne une copie de la chaîne sous-jacente comme si vous
rdbuf()->str()
.2) Remplace le contenu de la chaîne sous-jacente comme en appelant
rdbuf()->str(new_str)
…Remarques
La copie de la chaîne sous-jacente renvoyée par str est un object temporaire qui sera détruit à la fin de l’expression, appelant ainsi directement
c_str()
sur le résultat destr()
(par exemple dansauto *ptr = out.str().c_str();
) résulte en un pointeur en suspens …
De la mémoire, vous appelez ssortingngstream :: str () pour obtenir la valeur std :: ssortingng.
std::ssortingngstream::str()
est la méthode que vous recherchez.
Avec std::ssortingngstream
:
template std::ssortingng YourClass::NumericToSsortingng(const T & NumericValue) { std::ssortingngstream ss; ss << NumericValue; return ss.str(); }
std::ssortingngstream
est un outil plus générique. Vous pouvez utiliser la classe plus spécialisée std::ossortingngstream
pour ce travail spécifique.
template std::ssortingng YourClass::NumericToSsortingng(const T & NumericValue) { std::ossortingngstream oss; oss << NumericValue; return oss.str(); }
Si vous travaillez avec le type std::wssortingng
, vous devez préférer std::wssortingngstream
ou std::wossortingngstream
.
template std::wssortingng YourClass::NumericToSsortingng(const T & NumericValue) { std::wossortingngstream woss; woss << NumericValue; return woss.str(); }
Si vous voulez que le type de caractère de votre chaîne puisse être sélectionné au moment de l'exécution, vous devriez également en faire une variable de modèle.
template std::basic_ssortingng YourClass::NumericToSsortingng(const NumType & NumericValue) { std::basic_ossortingngstream oss; oss << NumericValue; return oss.str(); }
Pour toutes les méthodes ci-dessus, vous devez inclure les deux fichiers d'en-tête suivants.
#include #include
Notez que l'argument NumericValue
dans les exemples ci-dessus peut également être transmis en tant que std::ssortingng
ou std::wssortingng
à utiliser respectivement avec les std::ossortingngstream
et std::wossortingngstream
. Il n'est pas nécessaire que NumericValue
soit une valeur numérique.
Je voudrais append que vous devez terminer le tampon strstream avec ‘\ 0’ avant d’appeler la méthode .str (). Sinon, vous obtiendrez de mauvais caractères lors du vidage de la chaîne.