>>741
>> basic_string::c_str
> const E *c_str() const;
> このメンバ関数は、制御シーケンスの終端に null 要素 E(0) を追加して生成した編集不能な C 文字列を指すポインタを返します。
> *this に対して const 以外のメンバ関数を呼び出すと、このポインタは無効になります。

この動作のとおりならc_strで取得した文字列はNUL終端されてる。
ただDrawTextはともかく・・・

>>740
http://msdn.microsoft.com/ja-jp/library/cc428775.aspx
>> TextOut
> lpString
> 描画する文字列へのポインタを指定します。文字列の長さは cbString パラメータで決まるため、
> この文字列はゼロ文字 ('\0') で終わっている必要はありません。
> cbString
> 文字列に格納されている文字の数を指定します。

TextOutは-1指定しても意味ねぇな。