2010-09-17 16 views
5

वर्तमान में मैं एक प्रोग्राम है जो एक stringstream में बाइनरी डेटा लोड करता है और उसके बाद तो जैसे एक fstream करने के लिए डेटा pases हैबाइनरी डेटा को एक स्ट्रीम से दूसरे में कैसे कॉपी करें?

stringstream ss(stringstream::binary | stringstream::in | stringstream::out); 
ss.write(data, 512); // Loads data into stream 

// Uses a memory block to pass the data between the streams 
char* memBlock = new char[512]; 
ss.read(memBlock, 512); 

ofstream fout("someFile.bin", ios::binary); 
fout.write(memBlock, 512); // Writes the data to a file 
fout.close(); 

delete[] memBlock; 

मेरे सवाल यह है: वहाँ धाराओं के बीच बाइनरी डेटा पारित करने के लिए एक बेहतर तरीका है?

उत्तर

13

streambuf सदस्यों का उपयोग करें, कि वे क्या कर रहे हैं क्या है:

fout << ss.rdbuf(); 
+0

Isn't "ऑपरेटर <<" के लिए स्वरूपित इनपुट? मैं बाइनरी डेटा के साथ काम कर रहा हूँ। – Fabi1816

+0

@ Fabi1816: 'streambuf' के लिए एक अधिभार है जो बाइनरी आउटपुट करता है। यह अधिभार यहां ठीक है जो आप यहां अनुरोध करते हैं। –

+4

यह कार्यात्मक रूप से सही है। मुझे ऊपर पोस्ट सी शैली विधियों का उपयोग करने से सी ++ धाराओं के साथ डेटा कॉपी करने के लिए 2-3 गुना धीमा पाया गया है। मेरी परेशानी के लिए बहुत कुछ। – Stephen

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