Wie kann ich von string in String in C ++ konvertieren?
-
20-08-2019 - |
Frage
Wie konvertiere ich aus std::stringstream
in C ++ std::string
?
Habe ich eine Methode auf dem String-Stream aufrufen müssen?
Lösung
yourStringStream.str ()
Andere Tipps
Mit der .str () - Methode :
Leitet den Inhalt des zugrunde liegenden String-Objekts.
1) Gibt eine Kopie des zugrunde liegenden Zeichenfolge wie von
rdbuf()->str()
aufrufen.2) Ersetzt den Inhalt des zugrunde liegenden Zeichenfolge als ob durch den Aufruf
rdbuf()->str(new_str)
...Notizen
Die Kopie des zugrunde liegenden String von str zurückgegeben wird, ist ein temporäres Objekt, das am Ende des Ausdrucks zerstört werden, so direkt
c_str()
auf dem Ergebnis derstr()
(zum Beispiel inauto *ptr = out.str().c_str();
) führt zu einem baumelnden Zeiger ...
std::stringstream::str()
ist die Methode, die 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 generisches Werkzeug. Sie können die speziellere Klasse std::ostringstream
für diesen speziellen 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
Art von Strings arbeiten, müssen Sie std::wstringstream
bevorzugen oder std::wostringstream
statt.
template <class T>
std::wstring YourClass::NumericToString(const T & NumericValue)
{
std::wostringstream woss;
woss << NumericValue;
return woss.str();
}
Wenn Sie den Zeichentyp Ihrer Zeichenfolge wollen könnte Laufzeit wählbar, sollten Sie es auch eine Template-Variable 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 enthalten.
#include <string>
#include <sstream>
Beachten Sie, dass das Argument NumericValue
in den obigen Beispielen kann auch als std::string
oder std::wstring
geführt werden, um jeweils mit den std::ostringstream
und std::wostringstream
Instanzen verwendet werden. Es ist nicht erforderlich, dass der NumericValue
ein numerischer Wert zu sein.
Aus dem Gedächtnis rufen Sie string :: str () aus dem std :: string-Wert zu erhalten.
Ich möchte hinzufügen, dass Sie den Strstream Puffer mit ‚\ 0‘ vor dem Aufruf .str () -Methode beenden müssen. Sonst werden Sie schlechte Zeichen erhalten, wenn die Zeichenfolge Dumping.