perlapiによると、次のようにsv_catpv()
動作します。
NUL
で終わる文字列を、SV にある文字列の末尾に連結します。SV に UTF-8 ステータスが設定されている場合、追加されるバイトは有効な UTF-8 である必要があります。「get」マジックは処理しますが、「set」マジックは処理しません。
void sv_catpv(SV *const sv, const char* ptr)
私が見つけたほとんどの XS チュートリアルでは、次のように使用さsv_catpvs()
れています。
と同様
sv_catpvn
ですが、文字列/長さのペアの代わりにリテラル文字列を取ります。
void sv_catpvs(SV* sv, const char* s)
それはあまり役に立たないので、sv_catpvn()
次を見てみましょう。
SV にある文字列の末尾に文字列を連結します。は
len
、コピーするバイト数を示します。SV に UTF-8 ステータスが設定されている場合、追加されるバイトは有効な UTF-8 である必要があります。「get」マジックは処理しますが、「set」マジックは処理しません。
void sv_catpvn(SV *dsv, const char *sstr, STRLEN len)
したがって、sv_catpvn
はsv_catpv
、文字列の長さを別のパラメーターとして受け取ることを除いてsv_catpvs
と同じsv_catpvn
ことを行い、リテラル文字列を受け取ることを除いて と同じです。
sv_catpv
と の間に微妙な違いがありますかsv_catpvs
、それとも同じことを行うための2つの方法にすぎませんか?