2010-09-17 178 views
5

目前我已经加载的二进制数据转换成字符串流,然后一个程序中的数据pases像这样一个fstream的:如何将二进制数据从一个流复制到另一个流?

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 2010-09-20 17:17:26

+0

@ Fabi1816:'streambuf'有一个超载,它执行二进制输出。这个超载在这里完成你在这里请求的内容。 – 2010-09-21 08:24:46

+4

这在功能上是正确的。我发现使用C++流复制数据比使用上面提到的C风格方法慢2-3倍。很让我烦恼。 – Stephen 2014-03-13 21:58:37

相关问题