C++取URL域名

通过STL C++实现


char* GetHost(const char* Url)
{
	std::string str=Url;
	str.replace(0,str.find("://")+3,"");
	if(str.find(":")!=str.npos){
		str.replace(str.find(":"),str.length(),"");
	}
	if(str.find("/")!=str.npos){
		str.replace(str.find("/"),str.length(),"");
	}
	return _strdup(str.c_str());
}


VC++获取当前用户名

void CGetusersDlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	CString strUsername = _T("");
	DWORD nSize = 1024;

	//获取用户名
	::GetUserNameW(strUsername.GetBuffer(nSize),&nSize);

	strUsername.ReleaseBuffer();
	SetDlgItemTextW(IDC_EDIT1,strUsername);

}


C++ 模板类

中文读法:mu ban lei

英语:template class


看以下例子:


#include <iostream>
using namepsace std;


void foo(int &a, int &b)
{
	int tmp = a;
	a = b;
	b = tmp;
}


int main()
{
    int num,nums;
    num = 1;
    nums = 2;
    foo(num,nums); //交换数值 
     return 0;
}



发现这样写法效率不高,如果还要转double float char ...的话还要再写一个函数来实现,怎么办呢?

C++提供了模板类,可以解决这个问题。

将以下代码修改为:


#include <iostream>
using namepsace std;

template <class T>
void foo(T &a, T &b)
{
	T tmp = a;
	a = b;
	b = tmp;
}


int main()
{
	int num,nums;
	num = 1;
	nums = 2;
	foo(num,nums); //交换数值

	double db,dbs;
	db = 1.00;
	dbs = 2.00;
	foo(db,dbs);
	return 0;
}