我正在尝试使函数找到一个窗口句柄。我在以下方式之前做了很多次:
HWND windowHandle
windowHandle = FindWindow(NULL, "NameOfWindowIAmLookingFor");
但是,我接着尝试了以下操作:
string myString = "NameOfWindowIAmLookingFor";
HWND windowHandle
windowHandle = FindWindow(NULL, myString);
出现以下错误:
error: cannot convert 'std::string {aka std::basic_string<char>)' to 'LPCSTR {aka const char*} ' for argument '2' to 'HWND__* FindWindowA(LPCSTR, LPCSTR)';
我有另一个函数给myString一个值,所以我想将该值作为变量传递给FindWindow()函数,但是这个错误即将出现,我不明白发生了什么。
问题::为什么我会收到此错误,如何将字符串变量放入FindWindow()函数?
答案 0 :(得分:3)
为什么我会收到此错误,如何将字符串变量放入FindWindow()函数?
编译器错误消息非常清楚。 FindWindow()
函数需要const char*
作为第二个参数,std::string
不是。{。}
要获取const
指向由std::string
实例管理的原始char数组数据的指针,请使用c_str()
方法:
FindWindow(NULL, myString.c_str());
答案 1 :(得分:0)
问题是您尝试将std::string
类型的对象传递到需要LPCSTR
(const char*
的别名)的函数中,但是std::string
不会隐式转换为const char*
,因此您会收到错误消息。
要使函数起作用,您需要传递一个C风格的字符串(const char*
),通过传递myString.c_str()
而不是myString
来完成。