एनएसएसटींग शुरू करने का सबसे अच्छा तरीका क्या है जिसमें @"\0" शामिल है?

NSString* foo = @"bar\0";

कारण 'CFString शाब्दिक में NUL वर्ण शामिल है' चेतावनी।

2
fish potato 2 जून 2011, 11:56
चेतावनी इतनी बुरी नहीं लगती।
 – 
tofutim
2 जून 2011, 12:03
@tofutim: जबकि एक चेतावनी का मतलब यह नहीं है कि कोई समस्या मौजूद है, किसी को अनदेखा करना या इसे खारिज करना क्योंकि यह "इतना बुरा नहीं लगता" बिल्कुल उचित प्रतिक्रिया नहीं है।
 – 
Jonathan Grynspan
22 मई 2012, 08:14

2 जवाब

सबसे बढ़िया उत्तर

NSString ऑब्जेक्ट टेक्स्ट के लिए हैं। यदि आप टेक्स्ट डेटा के बीच गैर-पाठ डेटा रखना चाहते हैं तो NSData या NSMutableData ऑब्जेक्ट का उपयोग करने पर विचार करें (उदाहरण के लिए, जब इसे सॉकेट में लिखा जाना है या फ़ाइल में सहेजा जाना है)।

6
dreamlax 2 जून 2011, 12:25
हाँ, मैं udp के माध्यम से स्ट्रिंग भेजने के लिए एक प्रोग्राम लिख रहा हूँ। मैंने NSMutableData का उपयोग करने की कोशिश की और समस्या हल हो गई। धन्यवाद।
 – 
fish potato
2 जून 2011, 13:03

आप एक NUL वर्ण को NSString इंस्टेंस में कर सकते हैं, यहां एक उदाहरण दिया गया है:

int main() {
    NSString *string = [NSString stringWithFormat: @"Hello%CWorld!", 0];
    NSData *bytes = [string dataUsingEncoding: NSUTF8StringEncoding];
    NSLog(@"string: %@", string);
    NSLog(@"bytes: %@", bytes);
    return 0;
}

जागरूक रहें कि आपके ऐप के निष्पादन में आश्चर्यजनक बिंदुओं पर, निचले स्तर के एपीआई के साथ इंटरैक्ट करने के लिए स्ट्रिंग को सी स्ट्रिंग (या कुछ इसी तरह) में परिवर्तित कर दिया जाएगा, और इससे स्ट्रिंग को छोटा कर दिया जाएगा . एक उदाहरण के रूप में, उपरोक्त कार्यक्रम का आउटपुट यह है:

2011-06-02 09:18:30.307 शीर्षकहीन [294:707] स्ट्रिंग: हैलो

2011-06-02 09:18:30.309 शीर्षकहीन [294:707] बाइट्स: <48656सी6सी 6एफ00576एफ 726सी6421>

दिखा रहा है कि NSString स्वयं पूरी तरह से बरकरार है लेकिन NSLog() इसे सही ढंग से प्रदर्शित नहीं करेगा।

3
user23743user23743 2 जून 2011, 12:22
धन्यवाद - वास्तव में इस उत्तर ने वास्तव में मेरी मदद की। कारक "%C" प्रारूप विनिर्देशक है जिसने मुझे "\000" (जो एक संकलक चेतावनी का कारण बनता है) को "%C", 0 से बदलने में सक्षम बनाता है
 – 
helioz
4 नवम्बर 2011, 12:26