Frage

Wie konvertiere ich aus std::stringstream in C ++ std::string?

Habe ich eine Methode auf dem String-Stream aufrufen müssen?

War es hilfreich?

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 der str() (zum Beispiel in auto *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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top