C++函数模板如何才能根据参数类型执行不同的代码
发布时间:2011-06-28 10:24:35 文章来源:www.iduyao.cn 采编人员:星星草
C++函数模板怎么才能根据参数类型执行不同的代码
如何让算法同时支持两种字符类型(char 和 wchar_t)?
写了一个子串替换的函数,原型如下:
char *ReplaceSubstr(char *pSrcStr,char *pFindStr,char *pNewStr);
现在,我想把其中的char换成wchar_t,就实现思路而已,不管是char还是wchar_t其实都是一样的,我不想直接把代码复制一份,然后把类型替换成wchar_t,我的目标是希望一份代码能够泛型支持两种字符类型。
首先,想到了c++函数模板
template<typename CHARTYPE>
CHARTYPE *ReplaceSubstr(CHARTYPE *pSrcStr,CHARTYPE *pFindStr,CHARTYPE *pNewStr);
但是这样做的话,由于我代码实现中用到了strstr函数,这个函数只支持char *类型,wchar_t类型的对应函数是wcsstr。
我希望可以能够根据当前的CHARTYPE是char还是wchar_t来自动调用strstr或wcsstr,请问要怎么实现?
或者还有没有其他办法,能够在只有一份代码的前提下,让算法同时支持两种类型?
补充一点,我要的是支持两种类型,那种 #ifdef UNICODE #else #endif的方式不是我要的,我的代码里可能会同时调用char和wchar_t的接口
比如
int main()
{
ReplaceSubstr("Hello World","He","AB");
ReplaceSubstr(L"Hello World",L"He",L"AB");
}
------解决思路----------------------
typeid
------解决思路----------------------
为 strstr 和 wcsstr 写一个包装函数,用同一个函数名,使用重载机制来让他们选择不同的类型。然后你的模板函数里面调用这个包装的函数就行了
------解决思路----------------------
你可以自己重载一个 wchar_t 的 strstr ,里面调用 wstrstr
------解决思路----------------------
前段时间刚好处理char跟wchar信息正好遇到了相似的问题。。。我是直接用的函数重载。。。但是推荐使用STL中经常使用的typetraits。。。
我的代码实现
http://blog.csdn.net/u010370871/article/details/48175783
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
身为程序员一定要学C吗?还是直接学其他语言就可以了?
本来有javascript基础.
但想学c++或者c#.不知道从何开始.
有一次在某网站看...
-
有用双屏幕开发的吗?
RT,本人新手,昨天公司发了个大屏幕的显示器,本来是笔记本,结果我双屏幕切换时把两个显卡驱动都禁用了,两个显示器...
-
急!Microsoft Visual Studio 2010图标显示问题!
一开始我是把VS的那个无穷大似的图标锁定在任务栏里的,后来解锁了,然后桌面上、开始...
-
AIX下如何得知一个文件是否被进程打开?
问题可以参考
http://topic.csdn.net/u/20110809/23/d4d8db23-07eb-4ac3-b212-c5a010820c...
-
推荐一款2000左右的智能机
RT~
------解决方案--------------------
merry christmas
------解决方案--------------------
小...
-
关于 % 的小问题,求解
有这样一句提示信息:
printf("n请输入一个型如2+3*(4+5)-3^2%4*6/2的表达式n");
但在运行后输出是:
请输入...
-
新手求助
大家好,鄙人刚来,菜鸟一个,想知道如何下载别人上传的资源,为什么没有下载链接,是需要一定的分数才能下载还是怎么回事?希望好...
-
CSDN有搜索自己发言或者某人发言的功能吗
请指教
------解决方案--------------------
没有。。。
------解决方案------------...
-
订到2张回成都的车票, 不容易啊, 散分
12点左右就每5分钟刷一次, 从13号到16号就一直只有无坐...
13:55 刷出3张硬卧, 大喜, 结...
-
计算机专业大四应该学点什么东西呢?
我现在的情况是已经保研,计算机专业专业硕士。现在大四上半学期快结束了,寒假和下学期除了毕业...