¿Cómo puedo convertir de std::stringstream
a std::string
en C++?¿Cómo convierto de stringstream a string en C++?
¿Debo llamar a un método en la secuencia de cadenas?
¿Cómo puedo convertir de std::stringstream
a std::string
en C++?¿Cómo convierto de stringstream a string en C++?
¿Debo llamar a un método en la secuencia de cadenas?
yourStringStream.str()
Desde la memoria, llama a stringstream :: str() para obtener el valor de std :: string.
Uso del .str()-method:
Gestiona el contenido del objeto de cadena subyacente.
1) Devuelve una copia de la cadena subyacente como si llamando
rdbuf()->str()
.2) reemplaza el contenido de la cadena subyacente como si llamando
rdbuf()->str(new_str)
...Notas
La copia de la cadena subyacente devuelto por str es un objeto temporal que será destruido en al final de la expresión, así que llamar directamente
c_str()
en el resultado destr()
(por ejemplo, enauto *ptr = out.str().c_str();
) resulta en una referencia colgante ...
+1 porque proporcionó un enlace, a diferencia de las otras respuestas equivalentes. – rmeador
Me gustaría agregar que debe terminar el almacenamiento intermedio strstream con '\ 0' antes de llamar al método .str(). De lo contrario, obtendrás malos caracteres al tirar la cadena.
Esto no parece ser el caso. – Carcigenicate
Te estás confundiendo entre stringstream y [strstream] (http://kera.name/articles/2008/09/tomalaks-tuesday-tip-2-string-streams/). –
De acuerdo, esto describe strstream no stringstream. – bpeikes
std::stringstream::str()
es el método que está buscando.
Con std::stringstream
:
template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
std::stringstream ss;
ss << NumericValue;
return ss.str();
}
std::stringstream
es una herramienta más genérico. Puede usar la clase más especializada std::ostringstream
para este trabajo específico.
template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
std::ostringstream oss;
oss << NumericValue;
return oss.str();
}
Si está trabajando con std::wstring
tipo de cadenas, se debe preferir std::wstringstream
o std::wostringstream
lugar.
template <class T>
std::wstring YourClass::NumericToString(const T & NumericValue)
{
std::wostringstream woss;
woss << NumericValue;
return woss.str();
}
si desea que el tipo de carácter de la cadena podría ser seleccionable por el tiempo de marcha, también debe hacerlo una variable de plantilla.
template <class CharType, class NumType>
std::basic_string<CharType> YourClass::NumericToString(const NumType & NumericValue)
{
std::basic_ostringstream<CharType> oss;
oss << NumericValue;
return oss.str();
}
Para todos los métodos anteriores, debe incluir los siguientes dos archivos de encabezado.
#include <string>
#include <sstream>
Tenga en cuenta que, el argumento NumericValue
en los ejemplos anteriormente también se pueden pasar como std::string
o std::wstring
para ser utilizado con las instancias std::ostringstream
y std::wostringstream
respectivamente. No es necesario que el NumericValue
sea un valor numérico.
Esto es demasiado esfuerzo para una pregunta tan terrible. –
¿Has leído las respuestas a tu pregunta anterior, que cubría esto? –