Pregunta

¿Cómo puedo convertir de std::stringstream a std::string en C++?

Necesito llamar a un método en la cadena de flujo?

¿Fue útil?

Solución

yourStringStream.str ()

Otros consejos

Utilice el .str () - método :

  

Administra el contenido del objeto de cadena subyacente.

     

1) Devuelve una copia de la cadena subyacente como llamando a rdbuf()->str().

     

2) Reemplaza el contenido de la cadena subyacente como llamando a rdbuf()->str(new_str) ...

     

Notas

     

La copia de la cadena subyacente devuelta por str es un objeto temporal que se destruirá al final de la expresión, por lo que llama directamente a c_str() en el resultado de str() (por ejemplo en auto *ptr = out.str().c_str();) da como resultado un puntero colgante ...

std::stringstream::str() es el método que usted 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 más una herramienta genérica.Puede utilizar la clase 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 usted está trabajando con std::wstring tipo de cadenas, se debe preferir std::wstringstream o std::wostringstream en su 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 se puede ejecutar en tiempo seleccionable, usted también debe hacer es 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 de NumericValue en los ejemplos anteriores también se pueden pasar como std::string o std::wstring para ser utilizado con el std::ostringstream y std::wostringstream casos respectivamente.No es necesario para la NumericValue para ser un valor numérico.

De memoria, llama a stringstream :: str () para obtener el valor std :: string.

Me gustaría agregar que debe terminar el búfer strstream con '\ 0' antes de llamar al método .str (). De lo contrario, obtendrá caracteres incorrectos al volcar la cadena.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top