C++でstd::stringstream
からstd::string
に変換するにはどうすればよいですか?
文字列ストリームでメソッドを呼び出す必要がありますか?
yourStringStream.str()
。str()-method を使用します。
基になる文字列オブジェクトのコンテンツを管理します。
1)
rdbuf()->str()
を呼び出したかのように、基になる文字列のコピーを返します。2)
rdbuf()->str(new_str)
...を呼び出したかのように、基になる文字列の内容を置き換えます.注
Strによって返される基になる文字列のコピーは、式の最後で破棄される一時オブジェクトです。そのため、
c_str()
の結果でstr()
を直接呼び出すと(たとえばauto *ptr = out.str().c_str();
で)ダングリングしますポインタ...
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
が数値である必要はありません。
メモリからstringstream :: str()を呼び出して、std :: string値を取得します。