C ++で文字列ストリームから文字列に変換するにはどうすればよいですか?


124

どのようにしてから変換するかstd::stringstreamstd::stringC ++で?

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


4
これについて説明した前の質問への回答を読みましたか?

回答:



74

.str()メソッドを使用します

基本となる文字列オブジェクトの内容を管理します。

1)を呼び出す場合と同様に、基になる文字列のコピーを返しますrdbuf()->str()

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

ノート

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


14

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::wstringstreamstd::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::wstringstd::ostringstreamstd::wostringstreamインスタンスで使用したりすることもできます。がNumericValue数値である必要はありません。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.