Собсна, стоит задача: оформить функцию bool parseUrl(const string & url, Protocol & protocol, const unsigned int & port, const string & host, const string & document)
, которыая будет определять правильность введенной гиперссылки. Обозначено, что протокол есть перечисляемый тип:
enum Protocol { HTTP, HTTPS, FTP };
И я вообще не могу сообразить как справиться с протоколом. Как я понимаю, нужно сначала вырезать из строки часть, обозначающий протокол. А дальше? Что-то с чем-то сравнивать?
Разбираете исходную строку, достаете оттуда часть с протоколом, это все что слева до символа : (тут могу ошибаться) и делаете функцию вроде такой:
Protocol str2Protocol(const std::string& value)
{
if (value == "HTTP") return Protocol::HTTP;
else if (value == "HTTPS") return Protocol::HTTPS;
else if (value == "FTP") return Protocol::FTP;
else return Protocol::unknown; // or throw exception
}
А в коде будет как-то так:
Protocol proto = str2Protocol(protocol_str);
if (proto == Protocol::unknown)
{
//show error
}
Дополнительно добавить case-insensitive сравнение и проверки.
Эксепшны или unknown элемент перечисления - дело вкуса. Если enum задан где-то в другой либе и его нельзя изменить, то вместо else return Protocol::unknown;
следует бросить исключение Unknown protocol, которое потом можно обработать и показать ошибку
Виртуальный выделенный сервер (VDS) становится отличным выбором
Вот сам код, ошибка в строке 9
Почему следующая программа выводит 1 0, хотя вроде бы одинаковые проверки?