Come posso convertire da std::stringstreama std::stringin C ++?
Devo chiamare un metodo sul flusso di stringhe?
Come posso convertire da std::stringstreama std::stringin 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::ostringstreamper 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::wstringtipo di stringhe, devi preferire std::wstringstreamo std::wostringstreaminvece.
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 NumericValuenegli esempi precedenti può anche essere passato come std::stringo std::wstringper essere utilizzato rispettivamente con le istanze std::ostringstreame std::wostringstream. Non è necessario NumericValueche sia un valore numerico.
Dalla memoria, chiami stringstream::str()per ottenere il std::stringvalore.