Comment puis-je convertir de std::stringstreamla std::stringen C ++?
Dois-je appeler une méthode sur le flux de chaînes?
Comment puis-je convertir de std::stringstreamla std::stringen C ++?
Dois-je appeler une méthode sur le flux de chaînes?
Réponses:
yourStringStream.str()
Utilisez la méthode .str () :
Gère le contenu de l'objet chaîne sous-jacent.
1) Renvoie une copie de la chaîne sous-jacente comme si en appelant
rdbuf()->str().2) Remplace le contenu de la chaîne sous-jacente comme si en appelant
rdbuf()->str(new_str)...Remarques
La copie de la chaîne sous-jacente retournée par str est un objet temporaire qui sera détruit à la fin de l'expression, donc l'appel direct
c_str()sur le résultat destr()(par exemple dansauto *ptr = out.str().c_str();) entraîne un pointeur pendant ...
std::stringstream::str() est la méthode que vous recherchez.
Avec std::stringstream:
template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
std::stringstream ss;
ss << NumericValue;
return ss.str();
}
std::stringstreamest un outil plus générique. Vous pouvez utiliser la classe la plus spécialisée std::ostringstreampour ce travail spécifique.
template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
std::ostringstream oss;
oss << NumericValue;
return oss.str();
}
Si vous travaillez avec des std::wstringtypes de chaînes, vous devez préférer std::wstringstreamou à la std::wostringstreamplace.
template <class T>
std::wstring YourClass::NumericToString(const T & NumericValue)
{
std::wostringstream woss;
woss << NumericValue;
return woss.str();
}
si vous souhaitez que le type de caractère de votre chaîne puisse être sélectionné au moment de l'exécution, vous devez également en faire une variable de modèle.
template <class CharType, class NumType>
std::basic_string<CharType> YourClass::NumericToString(const NumType & NumericValue)
{
std::basic_ostringstream<CharType> 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 <string>
#include <sstream>
Notez que l'argument NumericValuedes exemples ci-dessus peut également être passé en tant que std::stringou std::wstringpour être utilisé avec les instances std::ostringstreamet std::wostringstreamrespectivement. Il n'est pas nécessaire que le NumericValuesoit une valeur numérique.
De mémoire, vous appelez stringstream::str()pour obtenir la std::stringvaleur.