首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >c++模板和字符串文本

c++模板和字符串文本
EN

Stack Overflow用户
提问于 2016-02-25 13:15:25
回答 1查看 366关注 0票数 2

我希望创建模板函数来解析常规或宽字符串。就像这样:

代码语言:javascript
复制
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);

此时,我遇到了问题,函数中有一个预定义的字符串"my_regex_expression"。但是对于具有宽字符的模板,我需要一个带有wide chars L"my_regex_expression"的字符串。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-25 13:36:18

这需要少量的代码复制,但是您可以有两个重载(每个类型的字符串一个),并让它们都调用一个接受字符串和basic_regex的模板函数。这将是一种类似于

代码语言:javascript
复制
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"));
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35628387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档