Wie konvertiere ich in C ++ von std::stringstream
nach std::string
?
Muss ich eine Methode für den String-Stream aufrufen?
Wie konvertiere ich in C ++ von std::stringstream
nach 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::stringstream
ist ein allgemeineres Werkzeug. Sie können die speziellere Klasse std::ostringstream
fü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::wstring
Zeichenfolgentypen arbeiten, müssen Sie dies bevorzugen std::wstringstream
oder std::wostringstream
stattdessen.
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 NumericValue
in den obigen Beispielen auch als std::string
oder std::wstring
für die Instanzen std::ostringstream
und übergeben std::wostringstream
werden kann. Es ist nicht erforderlich, dass der NumericValue
Wert numerisch ist.
Aus dem Speicher rufen Sie stringstream::str()
auf, um den std::string
Wert herauszuholen.