0

LPTSTR 変数を tstring (つまり、Unicode アプリケーションでは wstring、ANSI では string) に変換しようとしています。

この変換を実行するにはどうすればよいですか?

私のコードは変換を実行しようとしますが、エラーが発生します: "Debug Assertion Failed! Expression: invalid null pointer":

#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;
}
4

1 に答える 1

1

のコンストラクターに null ポインターを渡していますstd::basic_string<>– ダメです。bufferが null の場合に空の文字列が必要な場合は、次のようにします。

tstring propertyValue;
if (buffer)
    propertyValue = buffer;
于 2013-01-26T23:52:53.880 に答える