2012-04-10 11 views
5

के लिए सी ++ कक्षा में फॉपेन का उपयोग करके फ़ाइल में लिखने की आवश्यकता है मेरे पास एक प्रोजेक्ट है जो सी ++ कक्षाओं और एफएफएमपीईजी का उपयोग करता है, मुझे फॉपेन का उपयोग करने और ऐप सैंडबॉक्स में एक फाइल लिखने की आवश्यकता है, इसलिए मुझे जिस कोड की आवश्यकता है सी में लिखना ++ के बराबर है:आईओएस प्रोजेक्ट

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *docs_dir = [paths objectAtIndex:0]; 

यह मैं मेरे ऐप सैंडबॉक्स, जहां मैं काफी मेरी फ़ाइलों में हेरफेर कर सकते हैं सवाल यह है कि मैं इतना है कि मैं उपयोग कर सकते हैं C++ में इस कोड को लिखने के बारे में जाना है करने के लिए होगा एक फाइल पर फॉपेन?

इस विधि की जरूरत है कार्यान्वयन:

int testGrabAndWrite(const char* streamURL, bool decode, const char* filename) 
{ 
    FILE *outfile; 
    int ret; 
    int counter = 0; 
    uint8_t *data;    // Pointer to the received audio mem 
    int size;     // Size of the received audio buffer 


    outfile = fopen(filename, "w"); 

    if (outfile == NULL) 
     exit(1); 

    // Open the RTP stream 
    if ((ret = openStream(streamURL, decode)) < 0) 
     return ret; 

    // Print out info about the stream found 
    int tmpSampleRate, tmpBitRate, tmpChannels; 
    ret = getStreamInfo(tmpSampleRate, tmpBitRate, tmpChannels); 
    printf("\nSample rate:%d Bit rateL%d Channels:%d\n",tmpSampleRate,tmpBitRate, tmpChannels); 

    // Grab some sample data and write it to file. 
    while (counter < 500) 
    { 
     ret = getStreamData(data, size); 
     fwrite(data, 1, size, outfile);        // Write RTP packets, i.e. mp3, to file. 
     printf("Wrote packet %d with size %d which returned %d. ", ++counter, size, ret); 
    } 

    fclose(outfile); 
    closeStream(); 

    return ret; 
} 
+2

'fopen()' एक सी एपीआई है, सी ++ नहीं जो 'fstream' वर्ग और दोस्तों का उपयोग करता है। हमें उन वर्गों को दिखाएं जिन्हें आपको एकीकृत करने की आवश्यकता है। – trojanfoe

+1

एक .mm फ़ाइल बनाएं .. इस तरह आप सी ++ और उद्देश्य-सी –

उत्तर

7
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *docs_dir = [paths objectAtIndex:0]; 
NSString* aFile = [docs_dir stringByAppendingPathComponent: @"somedocthatdefinitelyexists.doc"]; 

FILE* fp = fopen([aFile fileSystemRepresentation], "r"); 

संदेश -fileSystemRepresentation एक चार * उपयुक्त रूप से जैसे फाइल सिस्टम के लिए इनकोडिंग retruns शायद यूटीएफ -8

+0

दोनों का उपयोग कर सकते हैं, यह बहुत अच्छा काम करता है, धन्यवाद –

+0

मैंने देखा कि यह सिम्युलेटर के लिए काम करता है लेकिन फ़ाइल 4 जीएस पर शून्य के रूप में वापस आती है। सुनिश्चित नहीं है कि आपने लोगों ने यह देखा था। जब मैं इसे प्राप्त करता हूं तो मैं कोशिश करता हूं और समाधान जोड़ता हूं। – Dev2rights

+0

@ Dev2Rights: कोई कारण नहीं है कि उपरोक्त कोड को वास्तविक डिवाइस पर तब तक काम नहीं करना चाहिए जब तक फ़ाइल अनुपलब्ध न हो या पठनीय न हो। 'Errno' का मूल्य क्या है – JeremyP

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