Ruby 2.6.0 リファレンスマニュアル > 関数一覧 > STR2CSTR

macro STR2CSTR

char * STR2CSTR(VALUE str)

Ruby のオブジェクト str から C の文字列を取り出します。 str が String でない場合は to_str によって変換を試みます。

返り値を free したり直接書き換えたりしてはいけません。

STR2CSTR は、与えられたオブジェクトが文字列でなく to_str メソッ ドを持つ場合、内部で to_str を呼び出して暗黙の型変換を行い、 それが保持する文字列ポインタを返します。 しかし、このAPIでは暗黙の型変換結果となるオブジェクトがどこからも 保持されないため、注意して使用しないと結果が GC される可能性があります。

Ruby 1.7 以降では代わりに StringValuePtr を使用します。こちら は、引数の参照先が暗黙の型変換の結果に置き換わるため変換結果が GC されません。(Ruby 1.7 では、STR2CSTR() は、obsolete です)

StringValue は、引数が to_str による暗黙の型変換を期待する 場合に使用します。