에 따르면, 다음과 같이 작동 sv_catpv()
다음 SV에 문자열의 단부 상sv_catpv()와 sv_catpvs()의 차이점은 무엇입니까? <a href="http://perldoc.perl.org/perlapi.html#SV-Body-Allocation">perlapi</a>
연접
NUL
로 끝나는 문자열. SV가 UTF-8 상태 세트를 가지고 있으면 추가 된 바이트는 유효한 UTF-8이어야합니다. 'get'마법을 처리하지만 'set'마법은 사용하지 않습니다.sv_catpvn
처럼하지만, 문자열/길이 쌍 대신 리터럴 문자열을 취 수행이 비록
void sv_catpv(SV *const sv, const char* ptr)
내가 사용
sv_catpvs()
을 찾은 XS 자습서의 대부분을, .
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
사이에 약간의 차이가 있습니까? 아니면 같은 것을하기위한 두 가지 방법이 있습니까?
즉, sv_catpvs에 실제로 null 문자가 포함될 수 있음을 의미합니다. – ysth
예, 의도하지 않은 부작용입니다. – ikegami