Кусок кода для проверки интернет соединения:
#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&
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Необходимо получить адрес начала PE-заголовка в памятиИспользую данный код:
Есть функция, которая при выводе текста на виджет Textedit (chat_edit), выравнивает его по левому краю через Qt::AlignLeftЯ хочу, чтоб, когда я получу текст,...