能力值:
( LV7,RANK:100 )
|
-
-
2 楼
|
能力值:
( LV12,RANK:250 )
|
-
-
3 楼
楼主没考虑https
|
能力值:
( LV3,RANK:20 )
|
-
-
4 楼
程序崩溃。
=========================
刚才忘了加.c_str()。可以使用,谢谢楼主
|
能力值:
( LV8,RANK:130 )
|
-
-
5 楼
好高深的算法,学习了
|
能力值:
( LV8,RANK:130 )
|
-
-
6 楼
typedef enum
{
TYPE_NULL, //XParseURL分析出错,或者地址错误
TYPE_FTP,
TYPE_HTTP,
TYPE_HTTPS,
}URLTYPE;
URLTYPE XParseURL( LPCTSTR lpURL,int *nPort,LPTSTR lpszHost,LPTSTR lpszObject)
{
URLTYPE urltype;
int nSize;
int i;
TCHAR lpszURL[1024];
LPCTSTR lpHttp = _T("http://");
LPCTSTR lpHttps = _T("https://");
LPCTSTR lpftp = _T("ftp://");
lstrcpy( lpszURL,lpURL );
for( i = 0;i<lstrlen(lpszURL);i++)
{
if( _T('\\') == lpszURL[i] ) lpszURL[i] = _T('/');
}
//判断协议
if( CSTR_EQUAL == CompareString( LOCALE_USER_DEFAULT,NORM_IGNORECASE,lpHttp,lstrlen(lpHttp),lpURL,lstrlen(lpHttp) ) )
{
nSize = lstrlen(lpHttp);
urltype = TYPE_HTTP;
if(nPort)*nPort = 80;
}else if( CSTR_EQUAL == CompareString( LOCALE_USER_DEFAULT,NORM_IGNORECASE,lpHttps,lstrlen(lpHttps),lpURL,lstrlen(lpHttps) ) )
{
nSize = lstrlen(lpHttps);
urltype = TYPE_HTTPS;
if(nPort)*nPort = 443;
}else if( CSTR_EQUAL == CompareString( LOCALE_USER_DEFAULT,NORM_IGNORECASE,lpftp,lstrlen(lpftp),lpURL,lstrlen(lpftp) ) )
{
nSize = lstrlen(lpftp);
urltype = TYPE_FTP;
if(nPort)*nPort = 21;
}else
{
urltype = TYPE_NULL;
return urltype;
}
//找页面
for( i = nSize;i<lstrlen(lpszURL);i++)
{
if( _T('/') == lpszURL[i] )
{
if(lpszObject)lstrcpy( lpszObject,&lpszURL[i+1] );
lpszURL[i] = 0;
break;
}
}
//找端口
for( i = nSize;i<lstrlen(lpszURL);i++)
{
if( _T(':') == lpszURL[i] )
{
if(nPort)*nPort = _ttoi( &lpszURL[i+1] );
lpszURL[i] = 0;
break;
}
}
if(lpszHost)lstrcpy( lpszHost,&lpszURL[nSize] );
return urltype;
}
给楼主参考一下我的代码,
注意:此代码不能分析url中所包含的帐号密码信息,
中能分析一般的url信息,如果 url中包含帐号密码,将默认放在主机名部分中,自己去解析帐号密码吧
|
能力值:
( LV15,RANK:520 )
|
-
-
7 楼
哥哥,我是Linux平台,能编译微软的API吗?
|
能力值:
( LV3,RANK:20 )
|
-
-
8 楼
http://www.xxxx.com:8080/……这类的url就不适用
|
能力值:
( LV8,RANK:130 )
|
-
-
9 楼
API?字符串不分大小 写比较,自己写个函数就最,还api
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
这尼玛好高深的技巧
每次看套哥的帖子都全身发热,精神大振,胜过修炼十年
|
能力值:
( LV8,RANK:130 )
|
-
-
11 楼
同感,太高深了
|
能力值:
( LV8,RANK:130 )
|
-
-
12 楼
我想知道linux高级么?
我经常干的事,就是把linux程序弄到win32下面,自感对linux还了解那么一点点
咋没有觉得有多高级呢
|
能力值:
( LV8,RANK:130 )
|
-
-
13 楼
size_t found = str.find_first_of("/\\");
咋看着这么别扭,谁能告诉我(/\\)是什么意思,懒得去翻msdn
居然是 “参考自百度” 的 “自创” 的 “小技巧” 的文章,不知道讲什么的。
再目测 ,以下格式 均不能解析
https://www.baidu.com/ (https或者其它协议)
HTTP://www.baidu.com (大小 写问题)
http://www.baidu.com(无结束标志)
http://www.baidu.com:80/ (端口)
http:\\ww.baidu.com\(斜杠反了)
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
无法学习,只能膜拜
|
能力值:
( LV15,RANK:520 )
|
-
-
15 楼
看看我的URISCHEME 实现类吧。
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
为啥都喜欢 printf 和 string 混用呢
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
\\ 好像是代表\
|
|
|