gpt4 book ai didi

c++ - 如何将 void * 转换为 CString

转载 作者:行者123 更新时间:2023-11-28 01:04:39 30 4
gpt4 key购买 nike

C++ 开发人员不多,处理字符串的多种方式总是让我感到困惑。

int Mine_SSL_Read(SSL* ssl, void* buf, int size)
{
int length = Real_SSL_Read(ssl, buf, size);

CString msg = ???
}

但是我需要为 SSL_Read 函数 (OpenSSL) 编写一个钩子(Hook),这需要一些 C++ 代码。我需要将类型为 void* 且长度为“length”的 buf 转换为 CString,以便它可以被其他代码解析。

最佳答案

假设 void* 只是一个字节(ASCII 或类似)字符:

如果你知道它是 NULL 终止的,你可以简单地转换它:

// ASCII
CString msg = reinterpret_cast<char*>(buf);

// UNICODE
CString msg = reinterpret_cast<wchar_t*>(buf);

如果它不是 NULL 终止的,或者你不知道那个事实,那么你必须逐字节复制它(我不相信 CString 有类似于 std::string 的 assign 函数。

CString msg;

char* str_buf = msg.GetBuffer();
char* msg_buf = reinterpret_cast<char*>(buf);

for(int x = 0; x < size; ++x)
*str_buf++ = *msg_buf++;

关于c++ - 如何将 void * 转换为 CString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6942791/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com