23.1 文字列ストリームの役目
string文字列に対応した、文字列入出力機能です。
#include <sstream>
istringstream // stringオブジェクトから入力を行なう
ostringstream // stringオブジェクトに出力を行う
stringstream // stringオブジェクトに入出力を行う
23.2 出力文字列ストリームを使う
出力用の文字列ストリーム(ostringstream)を使うときは、次のようにします。
ostringstream ostr; // ostrという名前のストリーム
ostr << "aaaan"; // 文字列を出力
ostr << 100; // 続いて数値を出力
ostr << hex << idt << 'n'; // 変数idtの内容を16進数で出力
cout << ostr.str(); // ostrの内容を文字列出力
ostr.str(""); // ostrの内容を空にする
23.3 入力文字列ストリームを使う
string ss;
int idt;
string buf = "abcd 255"; // stringオブジェクトを確保
istringstream istr(buf); // それを入力文字列ストリームに関連付ける
istr >> ss; // 文字列をssに取得。ssは"abcd"になる
istr >> idt; // 次に数値をidtに取得。idtは255になる
istringstreamオブジェクトの場合は、引数付きstr()関数で、あとから値をコピーできます。
たとえば、
istr.str("AAAA BBBB"); // istrストリームの内容を"AAAA BBBB"にする
としたり、stringオブジェクトを使って、
string newss = "AAAA BBBB";
istr.str(newss); // istrストリームをnewssの内容にする
とすることができます。char[]型変数で設定することもできます。
このようにistringstreamオブジェクトの場合、str()関数は、
cout << istr.str(); // 引数がなければ内容参照
istr.str("AAAA BBBB"); // 引数があれば内容設定
のように使い分けされます。
23.4 入出力文字列ストリームを使う
stringstream stio;
stio << "bbbbn";
stio << id;
stio.seekg(0, ios_base::beg);
stio >> ss;