C++ 模板和常量字符串

C++ 模板和常量字符串,c++,templates,C++,Templates,我有一个我想要模板的函数,目前我有两个不同版本的std::string和std::wstring 功能(精简)如下所示 template <class T, class _Tc> std::vector<T> TokenizeArgs(const T& in) { const T tofind = T("\"' "); .. do stuff .. } 模板 标准::向量标记搜索(常量T&in){ 常数T tofind=T(“\”); …做事。。 } T是st

我有一个我想要模板的函数,目前我有两个不同版本的
std::string
std::wstring

功能(精简)如下所示

template <class T, class _Tc>
std::vector<T> TokenizeArgs(const T& in) {
const T tofind = T("\"' ");
.. do stuff ..
}
模板
标准::向量标记搜索(常量T&in){
常数T tofind=T(“\”);
…做事。。
}
T
std::string
std::wstring
\u Tc
char
wchar\u T
。我在获取我定义的常量字符串以在模板版本中工作时遇到问题。上述代码适用于
std::string
,但不适用于
std::wstring
,因为对于采用
char*
数组的
std::wstring
没有构造函数。通常要解决此问题,我会将常量字符串声明为
const T tofind=L“\””
,但这样它就不能与
std::string
一起使用


我没有太多的模板经验,所以我真的不知道如何解决这个问题

您可以将const创建移动到自己的工厂函数中,并分别为
string
wstring
专门化函数

const T tofind = CreateConst<T>();


template <class T>
const T CreateConst();

template <>
const std::string CreateConst<std::string>()
{
     return std::string("\"' ");
}

template <>
const std::wstring CreateConst<std::wstring>()
{
     return std::wstring(L"\"' ");
}
const T tofind=CreateConst();
模板
const T CreateConst();
模板
常量std::string CreateConst()
{
返回std::字符串(“\”);
}
模板
常量std::wstring CreateConst()
{
返回std::wstring(L“\””);
}

@Bццћ嗯,我会这么想,因为函数在其他方面是相同的