【发布时间】:2012-02-02 07:59:59
【问题描述】:
一个函数从一个未知的 DLL 返回一个指针和一个长度(通过参数)。
Result = SpamnEggs( &pBytes, &nBytes )
指针指向一个有效的内存地址,在该地址处有 nBytes 个连续字节。 这些字节包含文本的有效 ascci 值。没有空终止!
我的任务是在输出之前在通用 C++ 代码(不使用复杂库或使用字节)中以少量 简单 操作“覆盖”某种字符串类型:
cout << sresult
添加: 无需复制字节,因为这是一个必须遍历的大缓冲区。
原型:
int SpamnEggs( void* pBytes, void* nBytes );
becomes
int SpamnEggs( char** pBytes, int* nBytes );
非常感谢大家。很好的答案,而且都非常有效。
【问题讨论】:
-
覆盖意味着不允许复制字符序列?或者这是一种可能的方法?
-
你应该创建一个全新的类来处理这些字符串?或者你可以使用
std::string my_string(static_cast<char*>(pointer), length)吗? -
可以使用 std:string 是的。让我测试一下这个想法……
-
@Joachim Pileborg:此构造函数复制整个字符串。那不是他想做的。
-
@Mike:
std::string将复制缓冲区。
标签: c++ arrays string function pointers