如何在Qt中解析网络主机名和端口?

3

我目前正在使用Qt编写网络应用程序,需要将网络地址分离成以下形式:

example.org:1234

将文本分为主机名和端口QString。
是否有Qt函数可以轻松解析并检查输入是否正确?
谢谢!

2
你有阅读过 QUrl 的文档吗?其中包括 QUrl::host()QUrl::port() - vahancho
1
谢谢,还有一个问题:我如何在没有前缀方案(例如 httpftp)的情况下使用 QUrl? - LocalToast
@LocalToast:答案解决了问题吗? - László Papp
2个回答

5
这很简单,您只需使用QUrl类,并使用构造函数host()port()方法即可:
QUrl url("http://example.org:1234")
qDebug() << "Host:" << url.host();
qDebug() << "Port:" << url.port();

关于你的评论,建议避免在每个url中使用方案(scheme),可以使用这个方法

url.setScheme("ftp");

或者

url.setScheme("http");

1

是的,你应该使用QUrl::fromUserInput函数来解析字符串,然后使用QUrl对象的hostport方法获取你想要的QString。

auto url{ QUrl::fromUserInput(address) };
auto host{ url.host() };
auto port{ QString::number(url.port()) };

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接