web-dev-qa-db-ja.com

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

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

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

111
Nick Bolton

yourStringStream.str()

177
Tyler McHenry

。str()-method を使用します。

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

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

2)rdbuf()->str(new_str)...を呼び出したかのように、基になる文字列の内容を置き換えます.

Strによって返される基になる文字列のコピーは、式の最後で破棄される一時オブジェクトです。そのため、c_str()の結果で str() を直接呼び出すと(たとえばauto *ptr = out.str().c_str();で)ダングリングしますポインタ...

73
Emil H

std::stringstream::str()は探しているメソッドです。

std::stringstreamを使用:

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

std::stringstreamはより一般的なツールです。この特定のジョブには、より特殊なクラスstd::ostringstreamを使用できます。

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

std::wstringタイプの文字列を使用している場合は、代わりにstd::wstringstreamまたはstd::wostringstreamを優先する必要があります。

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

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

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

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

#include <string>
#include <sstream>

上記の例のNumericValue引数は、std::stringまたはstd::wstringインスタンスでそれぞれ使用されるstd::ostringstreamまたはstd::wostringstreamとして渡すこともできます。 NumericValueが数値である必要はありません。

12
hkBattousai

メモリからstringstream :: str()を呼び出して、std :: string値を取得します。

10
Timo Geusch