我有一个想要模板化的函数,目前我有两个不同的版本std::string
和std::wstring
.
功能(精简)是这样的
template <class T, class _Tc>
std::vector<T> TokenizeArgs(const T& in) {
const T tofind = T("\"' ");
.. do stuff ..
}
T
要么std::string
要么std::wstring
并且_Tc
要么char
要么wchar_t
。我在获取我定义的常量字符串以在模板版本中工作时遇到问题。上面的代码适用于std::string
但不适用于,std::wstring
因为没有构造函数std::wstring
需要一个char*
数组。通常要解决此问题,我会将常量字符串声明为const T tofind = L"\"' "
,但随后它将无法与std::string
.
我对模板没有太多经验,所以我真的不知道如何解决这个问题。