正如标题所述,我想为字符串和字符指针专门设计一个函数模板。到目前为止,我已经做到了这一点,但我无法弄清楚如何通过引用传递字符串参数。以下是我的代码:链接
#include <iostream>
#include <string.h>
template<typename T> void xxx(T param)
{
std::cout << "General : "<< sizeof(T) << std::endl;
}
template<> void xxx<char*>(char* param)
{
std::cout << "Char ptr: "<< strlen(param) << std::endl;
}
template<> void xxx<const char* >(const char* param)
{
std::cout << "Const Char ptr : "<< strlen(param)<< std::endl;
}
template<> void xxx<const std::string & >(const std::string & param)
{
std::cout << "Const String : "<< param.size()<< std::endl;
}
template<> void xxx<std::string >(std::string param)
{
std::cout << "String : "<< param.size()<< std::endl;
}
int main()
{
xxx("word");
std::string aword("word");
xxx(aword);
std::string const cword("const word");
xxx(cword);
}
另外,template<> void xxx<const std::string & >(const std::string & param)
这个东西就是不起作用。
如果我重排原始模板,将参数接受为T&
,那么 char *
必须是 char * &
,这对于代码中的静态文本来说不是很好。
请帮帮忙!
<string.h>
加回来,以便使用strlen
函数。 - TonyK