Come posso convertire da std::stringstream
a std::string
in C ++?
Devo chiamare un metodo sul flusso di stringhe?
Come posso convertire da std::stringstream
a std::string
in C ++?
Devo chiamare un metodo sul flusso di stringhe?
Risposte:
yourStringStream.str()
Usa il metodo .str () :
Gestisce il contenuto dell'oggetto stringa sottostante.
1) Restituisce una copia della stringa sottostante come se chiamasse
rdbuf()->str()
.2) Sostituisce il contenuto della stringa sottostante come se chiamasse
rdbuf()->str(new_str)
...Appunti
La copia della stringa sottostante restituita da str è un oggetto temporaneo che verrà distrutto alla fine dell'espressione, quindi invocare direttamente
c_str()
il risultato distr()
(ad esempio inauto *ptr = out.str().c_str();
) si traduce in un puntatore penzolante ...
std::stringstream::str()
è il metodo che stai cercando.
Con std::stringstream
:
template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
std::stringstream ss;
ss << NumericValue;
return ss.str();
}
std::stringstream
è uno strumento più generico. Puoi usare la classe più specializzata std::ostringstream
per questo lavoro specifico.
template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
std::ostringstream oss;
oss << NumericValue;
return oss.str();
}
Se stai lavorando con il std::wstring
tipo di stringhe, devi preferire std::wstringstream
o std::wostringstream
invece.
template <class T>
std::wstring YourClass::NumericToString(const T & NumericValue)
{
std::wostringstream woss;
woss << NumericValue;
return woss.str();
}
se vuoi che il tipo di carattere della tua stringa possa essere selezionabile in fase di esecuzione, dovresti anche renderlo una variabile modello.
template <class CharType, class NumType>
std::basic_string<CharType> YourClass::NumericToString(const NumType & NumericValue)
{
std::basic_ostringstream<CharType> oss;
oss << NumericValue;
return oss.str();
}
Per tutti i metodi precedenti, è necessario includere i seguenti due file di intestazione.
#include <string>
#include <sstream>
Si noti che l'argomento NumericValue
negli esempi precedenti può anche essere passato come std::string
o std::wstring
per essere utilizzato rispettivamente con le istanze std::ostringstream
e std::wostringstream
. Non è necessario NumericValue
che sia un valore numerico.
Dalla memoria, chiami stringstream::str()
per ottenere il std::string
valore.