Кусок кода для проверки интернет соединения:
#include <Wininet.h>
#pragma comment(lib, "wininet.lib")
bool CheckConnection(const std::string InternetLink)
{
if (!InternetCheckConnectionW(InternetLink.c_str, FLAG_ICC_FORCE_CONNECTION, 0))
return 0;
return 1;
}
Мне выдаёт ошибку: не существует подходящей функции преобразования из "const std::string" в "LPCWSTR
Затем хотел вызвать её примерно так:
is(!CheckConnection("http://google.com") {...}
LPCWSTR — это Unicode-строка. В C++ её аналогом является std::wstring (обратите внимание на префикс w).
Используемый же вами std::string — это строка в однобайтной кодировке, и её можно преобразовать максимум в LPCSTR.
Соответственно, вам нужно использовать не Юникодный InternetCheckConnectionW(), а однобайтносимвольный InternetCheckConnectionA().
Чтобы не приходилось делать лишних преобразований строк, можно пользоваться таким нехитрым макросом:
#if defined(UNICODE)
#define _tstring wstring
#else
#define _tstring string
#endif
Теперь, в проекте замените все std::string на std::_tstring. И Вам уже не придется конвертировать строки на ровном месте. В STL есть и другие сюрпризы для winapi (например to_string/to_wstring). Это решение подходит и для них.
То же самое касается A/W, @AnT прав: не надо явно вызывать InternetCheckConnectionA или InternetCheckConnectionW, если у Вас на то нет особых требований (а судя по коду, их нет). Вызывайте InternetCheckConnection без постфиксов.
И не забывайте про текстовый помошник в windows - макрос TEXT или _T. Правильный вызов CheckConnection такой:
is(!CheckConnection(TEXT("http://google.com")) {...}
гляньте тута: Конвертация std::string в std::wstring
да и передавать в функцию лучше наверно не const std::string, а const std::string&
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости