Description
统一资源定位符也被称为网页地址,是因特网上标准的资源的地址(Address)。它最初是由蒂姆·伯纳斯-李发明用来作为万维网的地址的。现在它已经被万维网联盟编制为因特网标准RFC1738了。
因特网上的可用资源可以用简单字符串来表示,被称为“统一资源定位器”(URL,Uniform / Universal Resource Locator)。URL是一种标准化的命名方法,它可以用统一的格式来表示Internet提供的各种服务中信息资源的地址,以便在浏览器中使用相应的服务。
统一资源定位符的标准格式如下:
协议类型://服务器地址(:端口号)/路径/文件名
在应用中,我们常常需要从一条URL中截取远程服务器地址部分(IP地址或域名),以便进一步处理。为此我们提出了一个新算法来实现该功能,基于……
呃,写到这里卡住了,现在需要你来实现这个“新算法”,输出所给URL中的远程服务器地址部分。
Input
输入数据的第一行是一个正整数T(0<T<=100),表示有T组测试数据。
每组测试数据只有一行,包含一条URL(长度小于1000个字符,为可见ASCII字符),其中不包含空格,符合URL标准格式。
Output
对于每组测试数据,在一行上输出该URL地址中的远程服务器地址部分(IP地址或域名,不包含端口号)。
Sample Input
5
http://acm.xidian.edu.cn/
http://qinz.maybe.im/
https://www.something.com:8080/p?id=0
ftp://ftp.anything.com/nothing.zip
http://127.0.0.1/a/b/c/d/e
Sample Output
acm.xidian.edu.cn
qinz.maybe.im
www.something.com
ftp.anything.com
127.0.0.1
解题思路:
如果用string的话,这个题就变得非常简单.另外需要注意的是,如果要检查返回值,一定要用string::sizetype,不能用int或unsigned作为返回值型别。
#include<iostream>
#include<string>
using namespace std;
int main()
{
int T;
cin>>T;
for(int test=0;test<T;++test)
{
string url;
cin>>url;
string server;
string::size_type pos1,pos2;
pos1 = url.find("://");
pos2 = url.find(":",pos1+3);
if(pos2==string::npos)
pos2 = url.find("/",pos1+3);
server = url.substr(pos1+3,pos2-pos1-3);
cout<<server<<endl;
}
return 0;
}
最后欢迎大家访问我的个人网站: 1024s