c++如何获得IStream流对象中的数据长度

我通过函数bitmap.Save(pstream,&encoderClsid1,&encoderParameters);来将一个位图转化成jpg形式存入pstream中,... 我通过函数bitmap.Save(pstream, &encoderClsid1, &encoderParameters);
来将一个位图转化成jpg形式存入pstream中,psteam是个IStream的对象指针
现在我想将pstream通过套接字发送,但不知道pstream内的数据长度如何获得,我用socket->Send(pstream,sizeof(pstream));是不行的,sizeof(pstream)得到的不是pstream
对象的数据长度,msdn里面也没有直接获得的函数,请问此时pstream中的数据长度该如何获得?
展开
 我来答
viichi
2013-06-02 · TA获得超过355个赞
知道小有建树答主
回答量:158
采纳率:0%
帮助的人:209万
展开全部
socket->Send(pstream, ... )
本身就是完全错误的
socket 的 send 方法,发送的是二进制数据,pstream指向的istream对象,和istream对象中包含的数据,是两个感念。

另外,获得 istream对象内数据的长度可以通过 istream的seekg和tellg方法获得。

用seekg将当前位置移动到数据的末尾,然后通过tellg获得当前位置,这个位置,就是整个数据的大小。
追问
具体该怎么做呢,我该如何发送pstream中的数据,能给个具体的实线方式吗,万分感谢!
追答
 pstream->seekg(0, std::ios_base::end);
 size_t size = pstream->tellg();
 pstream->seekg(0, std::ios_base::beg);
 
 char *buf = new char[size];
 pstream->read(buf, size);
 socket->Send(buf, size);
 delete []buf;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式