C++给了一个string类型的url,怎么解析出其端口号字符串
时间: 2024-09-25 16:12:25 浏览: 41
C++实现简单的url解析
5星 · 资源好评率100%
在C++中,你可以使用标准库中的`std::regex`来解析URL并提取端口号。首先,需要包含头文件`<regex>`,然后创建一个正则表达式来匹配URL的基本结构。以下是一个简单的步骤:
```cpp
#include <iostream>
#include <regex>
#include <string>
std::string extractPort(const std::string& url) {
std::regex url_regex(R"((http|https)://([^/:]+):(\d+))"); // 正则表达式匹配 http(s)://host:port 部分
std::smatch match;
if (std::regex_search(url, match, url_regex)) {
return match[4].str(); // 返回第四个括号内的内容,即端口号
} else {
throw std::runtime_error("Invalid URL format");
}
}
int main() {
std::string url = "https://example.com:8080";
try {
std::cout << "Port: " << extractPort(url) << std::endl;
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return 0;
}
```
在这个例子中,函数`extractPort`尝试从给定的URL中找到端口号。如果成功匹配,它将返回端口号字符串;如果不匹配,则抛出异常。
阅读全文