CString str="http://www.baidu.com/xx1/xx2/fdsfsd/54fsefsd/fdsfsd/1.htm"; int pos1=str.Find("//"); int pos2=str.Find("/",pos1+3); CString URL=str.Mid(pos1+2,pos2-pos1-2);URL里面就是www.baidu.com了
上面的代码还得补充一下,因为有时URL里还带端口,如:http://www.myabc.com:8088/abc/index.htm所以代码如下: CString str="http://www.baidu.com/xx1/xx2/fdsfsd/54fsefsd/fdsfsd/1.htm"; int pos1=str.Find("//"); int pos2=str.Find("/",pos1+3); CString URL=str.Mid(pos1+2,pos2-pos1-2); pos1 = URL.Find(":"); if(pos1 > 0) URL = URL.Left(pos1);
CString str="http://www.baidu.com/xx1/xx2/fdsfsd/54fsefsd/fdsfsd/1.htm";
int pos1=str.Find("//");
int pos2=str.Find("/",pos1+3);
CString URL=str.Mid(pos1+2,pos2-pos1-2);URL里面就是www.baidu.com了
CString str="http://www.baidu.com/xx1/xx2/fdsfsd/54fsefsd/fdsfsd/1.htm";
int pos1=str.Find("//");
int pos2=str.Find("/",pos1+3);
CString URL=str.Mid(pos1+2,pos2-pos1-2);
pos1 = URL.Find(":");
if(pos1 > 0)
URL = URL.Left(pos1);
https
ftp
....
参考MSDN吧。
//pHttpUrl是函数参数,指传入的URL地址
char *pSt,*pEnd;
char sHostName[50];
//获得主机名
memset(sHostName,0,sizeof(sHostName));
pSt = strstr(pHttpUrl,"://");
if(pSt==NULL)
{
pEnd = strchr(pHttpUrl,'/');
if(NULL==pEnd) strcpy(sHostName,pHttpUrl);
else strncpy(sHostName,pHttpUrl,pEnd-pHttpUrl);
}
else
{
pEnd = strchr(pSt+strlen("://"),'/');
if(NULL==pEnd) strcpy(sHostName,pSt+strlen("://"));
else strncpy(sHostName,pSt+strlen("://"),pEnd-(pSt+strlen("://")));
}我先找到://的位置,然后根据指针的移动来获取主机名
操作函数
函数名: strstr
功 能: 在串中查找指定字符串的第一次出现
用 法: char *strstr(char *str1, char *str2); 函数名: strtok
功 能: 分解字符串为一组标记串。s为要分解的字符串,delim为分隔符字符串
用 法: char *strtok(char *s, char *delim);
程序例:#include <stdio.h>
#include <string.h>
int main(void)
{
char *str1 = "http://www.baidu.com/xx1/xx2/fdsfsd/54fsefsd/fdsfsd/1.htm", *str2 = "//", *str3="/", *ptr1, *ptrl2;
ptr1 = strstr(str1, str2); //ptr1="www.baidu.com/xx1/xx2/fdsfsd/54fsefsd/fdsfsd/1.htm"
ptr2 = strtok(ptr1, str3); //ptr2="www.baidu.com"
return 0;
}