Возможная опция заключается в том, чтобы сохранить известные стартовые протоколы в вектор строк, а затем использовать этот вектор и его fuctions, а также функции строк для выполнения ваших тестов, и если ваш URL-адрес сопоставляется с строковым объектом, это просто.
#include <string>
#include <vector>
int main {
const std::vector<std::string> urlLookUps { "http://", "https://" };
std::string url("https://www.home.com");
unsigned int size1 = urlLookUps[0].size();
unsigned int size2 = urlLookUps[1].size();
if (url.compare(0, size1, urlLookUps[0]) == 0 ||
url.compare(0, size2, urlLookUps[1]) == 0) {
std::cout << url << std::endl;
} else {
std::cout << "Invalid Address" << std::endl;
}
return 0;
}
EDIT
Вы можете принять это к следующему шагу и превратить его в простой функции
#include <string>
#include <vector>
void testUrls(const std::string& url, const std::vector<std::string>& urlLookUps) {
std::vector<unsigned int> sizes;
for (unsigned int idx = 0; idx < urlLookUps.size(); ++idx) {
sizes.push_back(urlLookUps[idx].size());
}
bool foundIt = false;
for (unsigned int idx = 0; idx < urlLookUps.size(); ++idx) {
if (url.compare(0, sizes[idx], urlLookUps[idx]) == 0) {
foundIt = true;
break;
}
}
if (foundIt) {
std::cout << url << std::endl;
} else {
std::cout << "Invalid URL" << std::endl;
}
} // testUrls
int main() {
const std::vector<std::string> urlLookUps { "http://", "https://" };
std::string url1("http://www.home.com");
std::string url2("https://www.home.com");
std::string url3("htt://www.home.com");
testUrl(url1, urlLookUps);
testUrl(url2, urlLookUps);
testUrl(url3, urlLookUps);
return 0;
} // main
Таким образом, вы можете передать как URL к функции, а также контейнер протоколов url, который пользователь может захотеть заполнить. Таким образом, функция будет выполнять поиск по всем строкам, которые сохраняются в векторе строк.
использовать 'find' и проверить, возвращает ли он 0. – NathanOliver
@NathanOliver, но это соответствует таким вещам, как' otherstuffhttp: // otherstuff' – Max
Возможный дубликат http://stackoverflow.com/questions/1878001/how-do-i -check-if-ac-string-starts-with-a-some-string-and-convert-a-sub – Max