मेरे पास आधार wchar_t*
है और मैं अंत में एक और जोड़ना चाहता हूं। मैं यह कैसे करुं? मैं बहिष्कृत कार्यों का उपयोग नहीं कर सकता क्योंकि मैं चेतावनियों को त्रुटियों के रूप में देख रहा हूं।आप दो wchar_t * को एक साथ कैसे जोड़ते हैं?
उत्तर
#include <wchar.h>
wchar_t *wcsncat(wchar_t *ws1, const wchar_t *ws2, size_t n);
wcsncat()
समारोह कोई श्रृंखला का पहला n वर्णों से अधिक स्ट्रिंग के अंत करने के लिए ws2
द्वारा की ओर इशारा किया ws1
द्वारा की ओर इशारा किया जोड़ता है। NULL
चरित्र ws2
में n
वर्णों से पहले दिखाई देता है, NULL
वर्ण तक के सभी वर्ण ws1
पर जोड़े गए हैं। ws2
का पहला अक्षर ws1
के वर्ण को समाप्त करने को ओवरराइट करता है। एक NULL
समापन चरित्र हमेशा परिणाम में संलग्न होता है, और यदि ऑब्जेक्ट ओवरलैप की प्रतिलिपि बनाने के लिए उपयोग की जाने वाली वस्तुएं, व्यवहार अपरिभाषित है।
ws1
अशक्त-समाप्त गंतव्य स्ट्रिंग है।
ws2
अशक्त-समाप्त स्रोत स्ट्रिंग है।
n
संलग्न करने के लिए वर्णों की संख्या है।
इसे अस्वीकार कर दिया गया है। – Chad
ऐसा करने का सबसे पोर्टेबल तरीका ऊपर वर्णित wcsncat
है, लेकिन ऐसा लगता है कि आप दृश्य सी ++ 2005 और बाद में "सुरक्षित सीआरटी" सुविधाओं के लिए प्रतिबद्ध हैं। (केवल माइक्रोसॉफ्ट ने उन कार्यों को "बहिष्कृत" किया है।) यदि ऐसा है, तो स्ट्रिंग.h में घोषित wcsncat_s
का उपयोग करें।
क्यों पहली जगह में एक std::wstring
का उपयोग नहीं:
wchar_t *ws1 = foo(), *ws2 = bar();
std::wstring s(ws1);
s += std::wstring(ws2);
std::wcout << s << std::endl;
यदि आवश्यक हो, std::wstring::c_str()
आप एक const wchar_t*
के रूप में परिणाम के लिए पहुँच देता है।
या 'const wchar_t * concatenation = s.c_str();' निर्भर करता है - लेकिन हाँ, पहली चीज जो मैं करता हूं वह उन्हें एक स्ट्रिंग प्रकार में लपेटती है। –
+1, लोगों को एसटीएल का उपयोग करना चाहिए जहां उचित हो। – DaMacc
wstrncat/wcsncat
कार्यों का उपयोग करना अच्छा है, लेकिन मुझे लगता है कि इन सुरक्षित स्ट्रिंग कार्यों का सबसे अच्छा संस्करण ओपन बीएसडी, अर्थात strlcat
और wstrlcat
द्वारा बनाई गई 'l' होते हैं। 'N' संस्करणों के साथ, आप एक स्ट्रिंग के साथ समाप्त हो सकते हैं जिसमें शून्य टर्मिनेटर नहीं है, इसलिए आपके पास अभी भी सुरक्षा समस्याएं हो सकती हैं। इसके अलावा कुछ कार्यान्वयन बफर में अप्रयुक्त स्थान को शून्य कर देंगे जो चीजों को थोड़ा धीमा कर सकता है।
विकिपीडिया पृष्ठ में इन कार्यों पर कुछ और जानकारी है: Strlcpy et al.। एकमात्र समस्या यह है कि ये मानक पुस्तकालयों में नहीं हैं, इसलिए आपको अपने प्रोजेक्ट में कोड शामिल करना होगा।
/* * Appends src to string dst of size siz (unlike strncat, siz is the * full size of dst, not space left). At most siz-1 characters * will be copied. Always NUL terminates (unless siz = siz, truncation occurred. */ size_t wstrlcat(wchar_t *dst, const wchar_t *src, size_t siz) { wchar_t *d = dst; const wchar_t *s = src; size_t n = siz; size_t dlen; /* Find the end of dst and adjust bytes left but don't go past end */ while(n-- != 0 && *d != L'\0') { d++; } dlen = d - dst; n = siz - dlen; if (n == 0) { return(dlen + wcslen(s)); } while(*s != L'\0') { if(n != 1) { *d++ = *s; n--; } s++; } *d = '\0'; return(dlen + (s - src)); /* count does not include NUL */ }
- 1. आप दो गिट रेपो कैसे जोड़ते हैं?
- 2. आप जावास्क्रिप्ट में दो ऑब्जेक्ट्स को कैसे जोड़ते हैं?
- 3. आप फ़िल्टर स्थितियों को कैसे जोड़ते हैं
- 4. आप BSTR को wchar_t [] में कुशलतापूर्वक कॉपी कैसे करते हैं?
- 5. आप एक्सकोड में ब्रेकपॉइंट कैसे जोड़ते हैं?
- 6. आप scala.xml के साथ xml दस्तावेज़ जानकारी कैसे जोड़ते हैं?
- 7. आप ggplot2 grobs को डेटा पर वापस कैसे जोड़ते हैं?
- 8. आप एक्सएमएल को एक्सएसडी से कैसे जोड़ते हैं?
- 9. एक्सकोड 4: आप मौजूदा ढांचे को कैसे जोड़ते हैं?
- 10. एसएसआरएस में आप कई परिणाम सेट कैसे जोड़ते हैं?
- 11. आप दो foreach loops को एक
- 12. wchar_t?
- 13. आर के लिए "वर्कफ़्लो" के साथ आप "संशोधन नियंत्रण" को कैसे जोड़ते हैं?
- 14. वर्डप्रेस.com होस्टेड ब्लॉग में आप जावास्क्रिप्ट विजेट कैसे जोड़ते हैं?
- 15. कैपिस्ट्रानो कार्य में आप कुछ कदम कैसे जोड़ते हैं?
- 16. प्रोग्रामिंग के रूप में आप असेंबली संदर्भ कैसे जोड़ते हैं?
- 17. विभिन्न दृश्य दिखाने के लिए आप UIPcrollview के साथ UIScrollview को कैसे जोड़ते हैं?
- 18. आप रेल बीजों.आरबी फ़ाइल में जॉइन जानकारी कैसे जोड़ते हैं?
- 19. आप रेक आंकड़ों में फ़ोल्डर कैसे जोड़ते हैं?
- 20. आप बहु थ्रेडेड समर्थन के लिए परीक्षण कैसे जोड़ते हैं?
- 21. आप मेनू आइटम में रेडियो बटन कैसे जोड़ते हैं?
- 22. सी ++ में स्ट्रिंग के लिए आप int कैसे जोड़ते हैं?
- 23. आप अपने vimrc में NERDTree कैसे जोड़ते हैं?
- 24. SQL सर्वर में एक बड़ी तालिका में आप एक न्यूल कॉलम कैसे जोड़ते हैं?
- 25. आप svn में सभी अनचाहे फ़ाइलों को कैसे जोड़ते हैं? गिट ऐड-ए की तरह कुछ?
- 26. प्रोलॉग - आप किसी सूची में किसी तत्व को तत्व कैसे जोड़ते हैं?
- 27. 2 परिवर्तनीय twig से कैसे जोड़ते हैं?
- 28. मैं jstring को wchar_t *
- 29. आईडीएलई में एक पायथन प्रोग्राम में ब्रेकपॉइंट्स कैसे जोड़ते हैं?
- 30. ओरेकल एपेक्स में एक रिपोर्ट में आप प्रत्येक पंक्ति में एक संपादन बटन कैसे जोड़ते हैं?
आप "पदावनत" के साथ मतलब है, तो मानक कार्यों कि माइक्रोसॉफ्ट पसंद नहीं करता है, तो परेशान न करें:
यहाँ एक
wstrlcat
कार्य करने के लिए स्रोत है। क्या आप वास्तव में विक्रेता लॉक-इन चाहते हैं, लेकिन फिर भी कोई पूर्ण सुरक्षा नहीं है? प्रोजेक्ट फ़ाइल में बस '_CRT_SECURE_NO_WARNINGS' को परिभाषित करें, और वीसी ++ बंद हो जाएंगे। – MSalters