Неправильное Вы выбрали решение проблемы.
InternetReadFile(hRequest, strContent, sizeof(strContent)/* - 1*/, &dwByteRead);
return string(strContent, dwByteRead);
InternetReadFile это не строковая функция, она не добавляет ноль в конец массива и более того, может добавить их в любое место массива, если читается двоичный файл. Есть к слову такой класс уязвимостей, когда строка то массив символов вроде std::string, то null-terminated. Проверки одного совершенно ничего не значат, для другого, так как std::string может хранить нулевой символ!