, std::allocator>"-6ren"> , std::allocator>"-首先。我想说,我不是 C++ 程序员。outlook 字符串在 visual studio 2015 中生成错误,并显示标题中的消息。 HWND windowHandle = (HWND)FindPr-6ren">
gpt4 book ai didi

c++ - 不存在合适的构造函数来从 "const char [8]"转换为 "std::basic_string, std::allocator>"

转载 作者:行者123 更新时间:2023-11-28 00:07:55 33 4
gpt4 key购买 nike

首先。我想说,我不是 C++ 程序员。outlook 字符串在 visual studio 2015 中生成错误,并显示标题中的消息。

HWND windowHandle = (HWND)FindProcessId("outlook");

函数定义:

DWORD FindProcessId(const std::wstring& processName)
{
PROCESSENTRY32 processInfo;
processInfo.dwSize = sizeof(processInfo);

HANDLE processesSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if (processesSnapshot == INVALID_HANDLE_VALUE)
return 0;

Process32First(processesSnapshot, &processInfo);
if (!processName.compare(processInfo.szExeFile))
{
CloseHandle(processesSnapshot);
return processInfo.th32ProcessID;
}

while (Process32Next(processesSnapshot, &processInfo))
{
if (!processName.compare(processInfo.szExeFile))
{
CloseHandle(processesSnapshot);
return processInfo.th32ProcessID;
}
}

return 0;
}

我在 outlook 字符串上收到错误,

HWND windowHandle = (HWND)FindProcessId(**"outlook"**);

我也对 HWND 进行了强制转换,但我不确定是否会遇到任何运行时编译错误。

最佳答案

您遇到错误是因为您传递的是 ASCII 字符串,而签名需要宽字符串。

尝试

HWND windowHandle = (HWND)FindProcessId(L"outlook");

您的签名

DWORD FindProcessId(const std::wstring& processName)

提到它需要 wstring ,它是宽字符串。您正在传递与 const string& 兼容的“outlook”。因此,您遇到了编译错误。

关于c++ - 不存在合适的构造函数来从 "const char [8]"转换为 "std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t>>",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34490350/

33 4 0