Como faço para converter de std::stringstream
para std::string
em C ++?
Preciso chamar um método no fluxo de strings?
Como faço para converter de std::stringstream
para std::string
em C ++?
Preciso chamar um método no fluxo de strings?
Respostas:
O que outras pessoas estão dizendo
yourStringStream.str()
Use o método .str () - :
Gerencia o conteúdo do objeto de cadeia subjacente.
1) Retorna uma cópia da sequência subjacente como se estivesse chamando
rdbuf()->str()
.2) Substitui o conteúdo da cadeia subjacente como se chamando
rdbuf()->str(new_str)
...Notas
A cópia da string subjacente retornada por str é um objeto temporário que será destruído no final da expressão, portanto, chamar diretamente
c_str()
o resultado destr()
(por exemplo, emauto *ptr = out.str().c_str();
) resulta em um ponteiro pendente ...
std::stringstream::str()
é o método que você está procurando.
Com std::stringstream
:
template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
std::stringstream ss;
ss << NumericValue;
return ss.str();
}
std::stringstream
é uma ferramenta mais genérica. Você pode usar a classe mais especializada std::ostringstream
para este trabalho específico.
template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
std::ostringstream oss;
oss << NumericValue;
return oss.str();
}
Se você estiver trabalhando com std::wstring
tipos de strings, deverá preferir std::wstringstream
ou std::wostringstream
não.
template <class T>
std::wstring YourClass::NumericToString(const T & NumericValue)
{
std::wostringstream woss;
woss << NumericValue;
return woss.str();
}
se você quiser que o tipo de caractere da sua sequência possa ser selecionável em tempo de execução, você também deve torná-la uma variável de modelo.
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 os métodos acima, você deve incluir os dois arquivos de cabeçalho a seguir.
#include <string>
#include <sstream>
Observe que o argumento NumericValue
nos exemplos acima também pode ser passado como std::string
ou std::wstring
para ser usado com as instâncias std::ostringstream
e, std::wostringstream
respectivamente. Não é necessário NumericValue
que seja um valor numérico.
A partir da memória, você liga stringstream::str()
para obter o std::string
valor.