C++ c++;模板和字符串文本

C++ c++;模板和字符串文本,c++,regex,string,templates,widechar,C++,Regex,String,Templates,Widechar,我想创建模板函数来解析常规字符串或宽字符串。 大概是这样的: template <class CharT> bool parseString(std::basic_string<CharT> str) { boost::basic_regex<CharT> myRegex("my_regex_expression"); boost::match_results<typename std::basic_string<CharT>

我想创建模板函数来解析常规字符串或宽字符串。 大概是这样的:

template <class CharT>
bool parseString(std::basic_string<CharT> str)
{
    boost::basic_regex<CharT> myRegex("my_regex_expression");
    boost::match_results<typename std::basic_string<CharT>::const_iterator> what;

    if (boost::regex_search(str, what, filenameRegex) == false)
    {
        return false;
    }

    ...

    return true;
}

template bool parseString<char>(std::string str);
template bool parseString<wchar_t>(std::wstring str);
模板
bool parseString(std::basic_string str)
{
boost::basic_regex myRegex(“my_regex_表达式”);
匹配结果是什么;
if(boost::regex_search(str,what,filenameRegex)==false)
{
返回false;
}
...
返回true;
}
模板bool-parseString(std::string-str);
模板bool-parseString(std::wstring-str);
此时我遇到了问题,在函数中我有一个预定义的字符串
“my_regex_expression”
。但是对于具有宽字符的模板,我需要一个具有宽字符的字符串
L“my_regex_expression”


如何解决这个问题?为窄字符和宽字符创建两种复制粘贴方法?也许我们有更好的解决方案?

它需要一点代码复制,但您可以有两个重载(每种类型的字符串一个),并让它们都调用一个模板函数,该函数接受字符串和
基本正则表达式。这将是类似于

template <class String, class Regex>
bool parseString(const String& str, const Regex & reg)
{
    boost::match_results<typename String::const_iterator> what;

    if (boost::regex_search(str, what, reg) == false)
    {
        return false;
    }

    //...

    return true;
}

bool parseString(const std::string& str)
{
    return parseString(str, boost::basic_regex<char> myRegex("my_regex_expression"));
}

bool parseString(const std::wstring& str)
{
    return parseString(str, boost::basic_regex<wchar_t> myRegex(L"my_regex_expression"));
}
模板
布尔语法字符串(常量字符串&str,常量正则表达式®)
{
匹配结果是什么;
if(boost::regex_搜索(str,what,reg)==false)
{
返回false;
}
//...
返回true;
}
布尔解析字符串(常量std::string和str)
{
返回parseString(str,boost::basic_regex myRegex(“my_regex_expression”);
}
布尔解析字符串(常量std::wstring和str)
{
返回parseString(str,boost::basic_regex myRegex(L“my_regex_expression”);
}

这是唯一的解决方案吗?我被困在同一个问题中,我不想重复一堆这样的函数…可能的重复