Como faço para converter de std::stringstreampara std::stringem C ++?
Preciso chamar um método no fluxo de strings?
Como faço para converter de std::stringstreampara std::stringem 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::ostringstreampara 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::wstringtipos de strings, deverá preferir std::wstringstreamou std::wostringstreamnã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 NumericValuenos exemplos acima também pode ser passado como std::stringou std::wstringpara ser usado com as instâncias std::ostringstreame, std::wostringstreamrespectivamente. Não é necessário NumericValueque seja um valor numérico.
A partir da memória, você liga stringstream::str()para obter o std::stringvalor.