⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 url.cpp

📁 小型搜索引擎,用C/C++编写,属于全文搜索引擎
💻 CPP
字号:
/* URL handling */#include <iostream>#include <string>#include "Url.h"/* Is X "."?  */#define DOTP(x) ((*(x) == '.') && (!*(x + 1)))/* Is X ".."?  */#define DDOTP(x) ((*(x) == '.') && (*(x + 1) == '.') && (!*(x + 2)))struct scheme_data{	char *leading_string;	int default_port;	int enabled;};/* Supported schemes: */static struct scheme_data supported_schemes[] ={	{ "http://",  DEFAULT_HTTP_PORT,  1 },	{ "ftp://",   DEFAULT_FTP_PORT,   1 },	/* SCHEME_INVALID */	{ NULL,       -1,                 0 }};/* Returns the scheme type if the scheme is supported, or   SCHEME_INVALID if not.  */void CUrl::ParseScheme (const char *url){	int i;	for (i = 0; supported_schemes[i].leading_string; i++)		if (0 == strncasecmp (url, supported_schemes[i].leading_string,                          strlen (supported_schemes[i].leading_string))) {			if (supported_schemes[i].enabled){				this->m_eScheme = (enum url_scheme) i;				return;			}else{				this->m_eScheme = SCHEME_INVALID;				return;			}		}	this->m_eScheme = SCHEME_INVALID;	return;}/* scheme://user:pass@host[:port]...  *                    ^               * We attempt to break down the URL into the components path, * params, query, and fragment.  They are ordered like this: * scheme://host[:port][/path][;params][?query][#fragment]  */bool CUrl::ParseUrl(string strUrl){	string::size_type idx;	this->ParseScheme(strUrl.c_str());		if( this->m_eScheme != SCHEME_HTTP )		return false;	// get host name	this->m_sHost = strUrl.substr(7);	idx = m_sHost.find('/');	if(idx != string::npos){		m_sHost = m_sHost.substr(0,idx);	}	this->m_sUrl = strUrl;	return true;}CUrl::CUrl(){	this->m_sUrl = ""; 	this->m_eScheme= SCHEME_INVALID;        	this->m_sHost = "";  	this->m_nPort = DEFAULT_HTTP_PORT;         	this->m_sPath = "";	this->m_sParams = "";	this->m_sQuery = "";	this->m_sFragment = "";	this->m_sDir = "";	this->m_sFile = "";                this->m_sUser = "";	this->m_sPasswd = "";}CUrl::~CUrl(){}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -