我正在努力使一个函数找到一个窗口句柄。在此之前,我曾多次这样做:
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()函数中?
发布于 2014-04-29 15:00:44
为什么要得到这个错误,如何将字符串变量放入FindWindow()函数中?
编译器错误消息非常清楚。FindWindow()函数需要一个const char*作为第二个参数,而std::string不是。
要获取(const)指向由std::string实例管理的原始字符数组数据的指针,请使用c_str()方法:
FindWindow(NULL, myString.c_str()); 发布于 2014-04-29 15:02:22
问题是,您试图将一个std::string类型的对象传递到一个需要LPCSTR (const char*的别名)的函数中,但是std::string并不隐式转换为const char*,因此得到了错误消息。要使函数正常工作,需要传递一个C样式字符串(const char*),通过传递myString.c_str()而不是myString来实现。
https://stackoverflow.com/questions/23368151
复制相似问题