gpt4 book ai didi

c++ - 在 C++ 中将字符串转换为 LPVOID 和 LPCWSTR

转载 作者:行者123 更新时间:2023-11-28 08:30:48 25 4
gpt4 key购买 nike

我正在使用 C++ 中的 winHTTP API,我已经开始为我的应用程序编写一个包装器类。为简单起见,我有许多函数可以采用字符串参数并在 winHTTP 调用中使用它们。然而,其中许多要求数据为 LPVOID 或 LPCWSTR。我可以通过使我的包装函数采用 LPVOID 或 LPCWSTR 参数来使其全部工作,但我更喜欢字符串参数。那么有什么方法可以从 sting 转换为 LPVOID/LPCWSTR 吗?

我的尝试(下面)只是产生了乱码

bool httpWrapper::setPostData(const string &postData){

_postData = (LPVOID)postData.c_str();

_postData_len = 47;

return false;
}

任何帮助将不胜感激

谢谢

最佳答案

注意 c_str() 的行为。它返回的char*是临时的,在字符串被修改或销毁后会失效。这很可能在使用 _postData 之前发生,可能在 setPostData() 返回时立即发生。您需要复制它。

下一个问题是 c_str() 不返回 LPCWSTR,它是一个 LPCSTR。一个 Actor 不能转换它,产生中文。您需要使用 MultiByteToWideChar() 将其转换为 Unicode 字符串。

关于c++ - 在 C++ 中将字符串转换为 LPVOID 和 LPCWSTR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2211755/

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