Я пытаюсь заставить функцию найти дескриптор окна. Я делал это много раз до следующего пути:
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 ()?
Почему я получаю эту ошибку и как я могу поместить строковую переменную в функцию FindWindow ()?
Сообщение об ошибке компилятора довольно ясно. FindWindow()
функция ожидает const char*
в качестве второго параметра, который std::string
нет.
Чтобы получить (const
) указатель на необработанные данные массива символов, управляемые std::string
экземпляр использовать c_str()
метод:
FindWindow(NULL, myString.c_str());
Проблема в том, что вы пытаетесь передать объект типа std::string
в функцию, требующую LPCSTR
(который является псевдонимом для const char*
), но std::string
неявно преобразуется в const char*
и поэтому вы получаете сообщение об ошибке.
Чтобы заставить функцию работать, вам нужно передать строку в стиле C (const char*
), что вы делаете, передавая myString.c_str()
вместо myString
,