, sv_catpv()
काम करता है इस प्रकार है:sv_catpv() और sv_catpvs() के बीच क्या अंतर है?
concatenates
NUL
-terminated स्ट्रिंग स्ट्रिंग जो एसवी में है के अंत पर। यदि एसवी में यूटीएफ -8 स्थिति सेट है, तो संलग्न बाइट वैध यूटीएफ -8 होना चाहिए। जादू 'हैंडल' हैं, लेकिन 'सेट' जादू नहीं है।
void sv_catpv(SV *const sv, const char* ptr)
XS ट्यूटोरियल मैं उपयोग sv_catpvs()
पाया है में से अधिकांश, हालांकि, जो करता है यह:
sv_catpvn
तरहबल्कि एक स्ट्रिंग/लंबाई जोड़ी के बजाय एक शाब्दिक स्ट्रिंग लेता है ।
void sv_catpvs(SV* sv, const char* s)
ठीक है, कि बहुत मददगार नहीं है, तो चलो sv_catpvn()
को देखो: स्ट्रिंग जो एसवी में है के अंत पर
concatenates स्ट्रिंग।
len
कॉपी करने के लिए बाइट्स की संख्या इंगित करता है। यदि एसवी में यूटीएफ -8 स्थिति सेट है, तो संलग्न बाइट वैध यूटीएफ -8 होना चाहिए। जादू 'हैंडल' हैं, लेकिन 'सेट' जादू नहीं है।
void sv_catpvn(SV *dsv, const char *sstr, STRLEN len)
तो, sv_catpvn
को छोड़कर यह एक अलग पैरामीटर के रूप में स्ट्रिंग लंबाई लेता है कि sv_catpv
के रूप में एक ही बात करता है, और sv_catpvs
sv_catpvn
रूप में एक ही है, सिवाय इसके कि यह शाब्दिक स्ट्रिंग लेता है।
वहाँ sv_catpv
और sv_catpvs
के बीच कुछ सूक्ष्म अंतर यह है कि मैं याद कर रहा हूँ, या वे सिर्फ एक ही बात करने के लिए दो तरीके हैं है?
जिसका अर्थ है sv_catpvs वास्तव में शून्य वर्ण – ysth
हां शामिल कर सकते हैं, हालांकि यह एक अनजान दुष्प्रभाव है। – ikegami