正如標題專業函數模板說,我想專門用於字符串和字符指針的函數模板,到目前爲止,我沒有this但我想不出通過引用傳遞的字符串參數。兩者的std :: string與char *
#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)
事情只是不工作。
如果我重新排列了opriginal模板以接受參數T&
,那麼char *
需要爲char * &
,這對代碼中的靜態文本不利。
請幫忙!
現在它不編譯!你需要把``放回``strlen`。 –
TonyK
2011-01-12 16:39:12