椿の日記

たぶんプログラムの話をします

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として使えるわけですね。一安心…。