没有合适的构造函数可以从"const char [8]"转换为"std::basic_string<wchar_t, std::char_traits<wchar_t>, std::
no suitable constructor exists to convert from "const char [8]" to "std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t>>"
首先。我想说,我不是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)
提到它取宽字符串CCD_ 1。您正在传递与const string&
兼容的"outlook"。因此,您得到了编译错误。
您使用字符串文字作为std::wstring &
,这是不允许的。也许,您可以通过将字符串设为std::wstring const &
、来修复
DWORD FindProcessId(std::wstring const & processName)
由于"outlook"
文字是一个右值,它不能绑定到non-const
引用,但将它绑定到const
引用是合法的。
相关文章:
- 将无符号char*转换为std::istream*C++
- 如何在对<char>C++程序进行逆向工程的同时将 std::basic_string 转换为 Rust 可读值?
- 将函数参数"const char*"转换为"std::string_view"是
- std::string 构造函数如何处理固定大小的 char[]?
- 如何使用多次 memcpy 转换回 std::vector<unsigned char>?
- 在标准中,模板参数的语法在哪里定义,例如,'std::function<int(char)>'?
- 为什么从 char 转换为 std::byte 可能是未定义的行为?
- <char> 使用 Vulkan 映射内存时如何使用 std::vector 而不是 void**?
- 类型为 'std::map< char,int > 的 <Swig 对象的代理
- C++:将模板类型 char 转换为 std::string
- 有效地将数据加载到 std::vector 中<char>
- 为什么 char 可以在 std::array 中初始化为 nullptr,而不是单独初始化?
- 从 std::string 到 std::array<char,size> 的 memcopy 额外数据是否是一种未定义的行为?
- "No suitable conversion function from 'std::string' to 'const char *' exists"
- 没有'str'成员在 GCC 和 Clang 'std::basic_ostream<char>',但 MSVC 没有问题
- 将"std::string {aka std::basic_string}"赋值中的不兼容类型<char>
- 将结构 std::memcpy 转换为具有足够容量的 std::vector 是未定义的行为<char>吗?
- 如何将 int 复制到 boost/std::char 数组?
- C++错误(将 wstring 转换为字符串):无法将参数 1 从 std::wchar_t 转换为 std::char
- std::char*值上的hash值,而不是内存地址上的