Wie konvertiere ich in C ++ von std::stringstreamnach std::string?
Muss ich eine Methode für den String-Stream aufrufen?
Wie konvertiere ich in C ++ von std::stringstreamnach std::string?
Muss ich eine Methode für den String-Stream aufrufen?
Antworten:
Wenn Sie
yourStringStream.str()
Verwenden Sie die .str () - Methode :
Verwaltet den Inhalt des zugrunde liegenden Zeichenfolgenobjekts.
1) Gibt eine Kopie der zugrunde liegenden Zeichenfolge wie beim Aufruf zurück
rdbuf()->str().2) Ersetzt den Inhalt der zugrunde liegenden Zeichenfolge wie durch Aufrufen von
rdbuf()->str(new_str)...Anmerkungen
Die von str zurückgegebene Kopie der zugrunde liegenden Zeichenfolge ist ein temporäres Objekt, das am Ende des Ausdrucks zerstört wird. Wenn Sie also
c_str()das Ergebnis vonstr()(z. B. inauto *ptr = out.str().c_str();) direkt aufrufen, wird ein baumelnder Zeiger angezeigt.
std::stringstream::str() ist die Methode, nach der Sie suchen.
Mit std::stringstream:
template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
std::stringstream ss;
ss << NumericValue;
return ss.str();
}
std::stringstreamist ein allgemeineres Werkzeug. Sie können die speziellere Klasse std::ostringstreamfür diesen bestimmten Job verwenden.
template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
std::ostringstream oss;
oss << NumericValue;
return oss.str();
}
Wenn Sie mit std::wstringZeichenfolgentypen arbeiten, müssen Sie dies bevorzugen std::wstringstreamoder std::wostringstreamstattdessen.
template <class T>
std::wstring YourClass::NumericToString(const T & NumericValue)
{
std::wostringstream woss;
woss << NumericValue;
return woss.str();
}
Wenn Sie möchten, dass der Zeichentyp Ihrer Zeichenfolge zur Laufzeit auswählbar ist, sollten Sie ihn auch zu einer Vorlagenvariablen machen.
template <class CharType, class NumType>
std::basic_string<CharType> YourClass::NumericToString(const NumType & NumericValue)
{
std::basic_ostringstream<CharType> oss;
oss << NumericValue;
return oss.str();
}
Für alle oben genannten Methoden müssen Sie die folgenden zwei Header-Dateien einschließen.
#include <string>
#include <sstream>
Beachten Sie, dass das Argument NumericValuein den obigen Beispielen auch als std::stringoder std::wstringfür die Instanzen std::ostringstreamund übergeben std::wostringstreamwerden kann. Es ist nicht erforderlich, dass der NumericValueWert numerisch ist.
Aus dem Speicher rufen Sie stringstream::str()auf, um den std::stringWert herauszuholen.