std::stringbufでNULL文字
stringstreamでNULL文字を扱うときの挙動はどうなるんだろう?
と不安に駆られてテストしてみたのですが、終端文字としては扱われないようで、安心しました。
void main() { std::stringstream s; const char text[] = "\0asdf"; s.write( text, sizeof(text) ); std::string data = s.str(); for( unsigned i = 0; i < data.length(); i++ ) { printf( "data[%d] == %d\n", i, data[i] ); } }
この出力はこうなる。
data[0] == 0 data[1] == 97 data[2] == 115 data[3] == 100 data[4] == 102 data[5] == 0
普通のmemory streamとして使えるわけですね。一安心…。