在我的程序中,我有以下格式的“服务器地址”列表:
host[:port]
这里的括号表示port
是可选的。
-
host
可以是主机名、IPv4 或 IPv6 地址(可能采用“括号内”表示法)。
-
port
,如果存在,可以是数字端口号或服务字符串(例如:“http”或“ssh”)。
If port
存在并且host
是 IPv6 地址,host
must采用“括号括起来”的表示法(示例:[::1]
)
以下是一些有效的示例:
localhost
localhost:11211
127.0.0.1:http
[::1]:11211
::1
[::1]
还有一个无效的例子:
::1:80 // Invalid: Is this the IPv6 address ::1:80 and a default port, or the IPv6 address ::1 and the port 80 ?
::1:http // This is not ambigous, but for simplicity sake, let's consider this is forbidden as well.
我的目标是将这些条目分为两部分(显然host
and port
)。我不在乎host
or port
只要它们不包含非括号括起来的内容,都是无效的:
(290.234.34.34.5
可以host
,将在下一步中被拒绝);我只是想将这两部分分开,或者如果没有port
部分, 至know不知何故。
我尝试做一些事情std::stringstream
但我想到的一切看起来都很老套,而且不太优雅。
你会如何做到这一点C++
?
我不介意以下答案C
but C++
是优选的。任何boost
也欢迎解决方案。
谢谢。
你看过吗提升::精神?不过,这对于你的任务来说可能有点过分了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)