gpt4 book ai didi

c++ - 从 LPTSTR 到 tstring 的转换导致运行时错误

转载 作者:行者123 更新时间:2023-11-28 07:47:49 25 4
gpt4 key购买 nike

我正在尝试将 LPTSTR 变量转换为 tstring(即,unicode 应用程序中的 wstring 和 ANSI 中的字符串)。

我如何执行此转换?

我的代码尝试执行转换,但它导致错误:“调试断言失败!表达式:无效的空指针”:

#ifdef UNICODE  
#define tstring std::wstring
#else
#define tstring std::string
#endif

tstring TVManager::getDevicePropertyTEST(HDEVINFO hDevInfo, SP_DEVINFO_DATA deviceInfoData, DWORD flag)
{
DWORD dataT = 0;
DWORD buffersize = 0;
LPTSTR buffer = NULL;

while (!SetupDiGetDeviceRegistryProperty(hDevInfo, &deviceInfoData, flag, &dataT,
(PBYTE)buffer, buffersize, &buffersize))
{
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
// Change the buffer size.
if (buffer)
LocalFree(buffer);
buffer = (LPTSTR)LocalAlloc(LPTR, buffersize);
}
else {
// Insert error handling here.
debug_print_ex("Else happened:", buffer);
break;
}
}

tstring propertyValue = tstring(buffer); // ERROR OCCURS HERE

if (buffer)
LocalFree(buffer);

return propertyValue;
}

最佳答案

您将空指针传递给 std::basic_string<>的构造函数——不好。如果 buffer 假设您只想要一个空字符串为空,然后执行以下操作:

tstring propertyValue;
if (buffer)
propertyValue = buffer;

关于c++ - 从 LPTSTR 到 tstring 的转换导致运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14542813/

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