103


12

Cでstringstreamからstringに変換するにはどうすればいいですか?
Cで `std

stringstream`から` std :: string`に変換するにはどうすればいいですか?

文字列ストリームのメソッドを呼び出す必要がありますか?

5 Answer


166


yourStringStream.str()


73


.str()-methodを使用してください。

_ _ 基になる文字列オブジェクトのコンテンツを管理します。

1) `rdbuf() - > str()`を呼び出すのと同じように、基になる文字列のコピーを返します。

2)基になる文字列の内容を `rdbuf() - > str(new_str)`を呼び出すのと同じように置き換えます。

ノート

strによって返される基になる文字列のコピーは式の最後で破壊される一時的なオブジェクトなので、直接http://en.cppreference.com/w/cpp/string/basic_string/c_str [`c_str()を呼び出します。 )str()の結果に対して(例えば、auto * ptr = out.str()。c_str(); `のように)ダングリングポインタになります…​ _ _


11


`std

stringstream :: str()`はあなたが探しているメソッドです。

`std

stringstream`の場合:

template
std::string YourClass::NumericToString(const T & NumericValue)
{
    std::stringstream ss;
    ss << NumericValue;
    return ss.str();
}
`std

stringstream`はより一般的なツールです。 この特定の仕事のためにもっと特殊なクラス `std :: ostringstream`を使うことができます。

template
std::string YourClass::NumericToString(const T & NumericValue)
{
    std::ostringstream oss;
    oss << NumericValue;
    return oss.str();
}
`std

wstring`タイプの文字列を使っているのなら、代わりに` std :: wstringstream`または `std :: wostringstream`を選ぶ必要があります。

template
std::wstring YourClass::NumericToString(const T & NumericValue)
{
    std::wostringstream woss;
    woss << NumericValue;
    return woss.str();
}

文字列の文字タイプを実行時に選択可能にしたい場合は、それをテンプレート変数にする必要があります。

template
std::basic_string YourClass::NumericToString(const NumType & NumericValue)
{
    std::basic_ostringstream oss;
    oss << NumericValue;
    return oss.str();
}

上記のすべての方法では、次の2つのヘッダーファイルを含める必要があります。

#include
#include
上記の例の引数 NumericValue`は、それぞれ std

ostringstream`インスタンスと std :: wostringstream`インスタンスで使用するために std :: string`または `std :: wstring`として渡すこともできます。 。 `NumericValue`が数値である必要はありません。


10


メモリから、std

stringの値を取り出すためにstringstream :: str()を呼び出します。


-2