gpt4 book ai didi

c++ - 使用字符串初始化wchar_t []

转载 作者:行者123 更新时间:2023-12-02 10:39:21 24 4
gpt4 key购买 nike

目前,我正在使用WMI从远程计算机上收集日志文件。
我有如下所示初始化的远程计算机的用户名。

wchar_t pszName[]=L"My username";
pszName[]wchar_t数组。我面临的麻烦是,当我将用户名作为字符串数据类型的参数传递时,我需要使用字符串初始化 wchar_t数组。

我不能使用 wchar_t*指针,因为它在程序的后半部分给我一个错误。我需要初始化类似
string username = "My username";
wchar_t pszName[] = .....?.....;

最佳答案

#include <string>
#include <vector>
#include <windows.h>

std::wstring str_to_wstr(std::string const & str)
{
int length = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), str.length(), 0, 0);
if (!length)
return L"utf-8 to utf-16 conversion error!";

std::vector<wchar_t> buffer(length + 1);
if (!MultiByteToWideChar(CP_UTF8, 0, str.c_str(), str.length(), buffer.data(), length))
return L"utf-8 to utf-16 conversion error!";

return std::wstring(buffer.data(), length);
}

// ...

std::string username{ "My username" };
std::wstring utf_16_username{ str_to_wstr(username) };

// ... use:
utf_16_username.data(); // wherever you would have used pszName

关于c++ - 使用字符串初始化wchar_t [],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51511065/

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