...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

std::stringstream 代替

本スレより.

import std.stdio : p = writefln, std.stream;
void main(){
  auto ms = new MemoryStream;
  ms.writeLine("hoge");
  ms.writeLine("huga");
  p(ms.toString());
}
/*
$ main.exe
hoge
huga
*/

C++ の std::stringstream の代わりか.toString() を使うときは少々気をつけなければならない点はあるらしいが,これはいいかも.あと toString() ではなく readLine() などを使う場合は,seek position を初期化するために

ms.writeLine("huga");
ms.position = 0;
string s = ms.readLine().idup;

と position にゼロを入れないといけないらしい.MemoryStream (というか Stream か)は読み書きの seek position を共有しているからだとか.