2012-01-05 11 views
7

मेरे पास एक सी लाइब्रेरी है जिसे मैं आईओएस ऑब्जेक्टिव-सी प्रोग्राम के भीतर से उपयोग कर रहा हूं। मेरी सी लाइब्रेरी के कार्यों में से एक फ़ाइल से डेटा को पढ़ता है और संसाधित करता है। वर्तमान में है कि समारोह लग रहा है इसआईओएस प्रोजेक्ट के लिए सी में फ़ाइल नाम स्ट्रिंग के लिए मुझे किस प्रकार का उपयोग करना चाहिए?

internalType* parseFile(const char* filename); 

की तरह कुछ iOS पर इस सुरक्षित जैसे फ़ाइल नाम के लिए एक चार * में गुजर रहा है या मैं यूनिकोड के साथ पैर में खुद को शूटिंग कर रहा हूँ? क्या यहां कोई पसंदीदा अभ्यास है?

उत्तर

3

यह संभवतः यूटीएफ -8 है। सुरक्षित होने के लिए, आपको पथों के लिए URL और -[NSString fileSystemRepresentation] के लिए CFURLGetFileSystemRepresentation का उपयोग करना चाहिए।

2

हाँ ... const char * सी चीजों के लिए ठीक काम करना चाहिए, खासकर जब वे उन सी कार्यों से मेल खाते हैं जिन्हें आप कॉल करने की संभावना रखते हैं, जैसे कि fopen

यदि आपकी फ़ाइलों में बेकार गैर-असीसी फ़ाइल नाम होने की संभावना है, तो सभी दांव बंद हैं। :-) आप उद्देश्य सी कॉल कर रहे हैं जो NSURL या NSString ऑब्जेक्ट्स लेते हैं।

+0

तो मैं इसे इस प्रकार कह सकता हूं: 'parseFile ([filename cStringUsingEncoding: NSASCIIStringEncoding]); '? – wxs

+0

हां, यह काम करना चाहिए। लेकिन फिर, यदि आपके पास फ़ाइल नाम में अजीब गैर-ASCII वर्ण हैं, तो अप्रत्याशित (और खराब) व्यवहार की अपेक्षा करें। –

+0

यह बिल्कुल मेरा डर है। मुझे आशा है कि आईओएस ऐसा नहीं होने देगा (यह एप्लिकेशन बंडल के भीतर एक फाइल होगी) – wxs

संबंधित मुद्दे

 संबंधित मुद्दे