2011-02-14 49 views
3

我有一個函數,它需要一個std :: istream &作爲參數,並將轉換後的流寫入std :: ostream &。在流中包裝一個向量<unsigned char>?

另一方面,我有另一個接受矢量參數的函數。

我的目標是將第一個函數的輸出傳遞給第二個函數。

有沒有什麼東西可以做到這一點? 否則,我該如何輕鬆實現它?

謝謝

編輯:這裏有兩個函數簽名:

functionA(std::istream& _in, std::ostream& _out); 
functionB(std::vector<unsigned char>& data); 

呼叫者看起來像:

std::vector<unsigned char> data; 
std::istrstream stream_in("input message"); 
std::ovectorstream stream_out(data); // ??? 
functionA(stream_in, stream_out); 
functionB(stream_out.vector()); 
+2

什麼是兩個功能ns簽名/頭文件? – vz0 2011-02-14 11:41:07

+0

有了更多的信息,我可以讓我的答案更具體。一些示例代碼的註釋符合「如何將X轉換爲Y?」在適當的地方會有幫助 – Flexo 2011-02-14 11:43:50

回答

5

我覺得這樣的事情可能會奏效

std::vector<unsigned char> data; 
std::istringstream stream_in("input message"); 
std::stringstream stream_out; 
functionA(stream_in, stream_out); 
const std::string& str_out(stream_out.str()); 
copy(str_out.begin(), str_out.end(), std::back_inserter(data)); 
functionB(data);