mor*_*lli 4 .net c# c++ stream
我有一个非托管的c ++库,它将文本输出到std :: ostream*.
我从ac#library使用的托管c ++包装器中调用它.
目前,我向非托管代码传递一个指向std :: stringstream的指针,然后调用System.String(stringstream.str(..c_str())将我的非托管缓冲区复制回.net友好字符串.
是否可以将.net Stream包装为stl std :: ostream*? - 允许我直接从非托管代码将文本流式传输到托管STREAM实现.
如果我理解正确,您希望使用C++标准流包装.NET流,以便您的本机代码流入C++标准流,但数据最终在.NET流中.
C++ IO流大致分为流本身,它们执行C++类型和二进制表示之间的所有转换,以及流缓冲,缓冲数据并从/写入设备.为了实现目标,您需要做的是使用写入.NET流的流缓冲区.为此,您需要创建自己的流缓冲区std::stream_buffer,该缓冲区派生自内部引用.NET流并将所有数据转发给它.这将传递给std::ostream传递给本机代码的对象.
编写自己的流缓冲区不是初学者的任务,但也不是特别困难.在C++ IO流上选择任何体面的参考(Langer/Kreft是你可以在纸上获得的最好的参考),找出你需要覆盖哪些虚拟函数才能做到这一点,并且你已经完成了.
| 归档时间: |
|
| 查看次数: |
2170 次 |
| 最近记录: |