如何使函数适用于字符串和wstring?

时间:2015-02-22 19:36:34

标签: c++ string unicode wstring

如果我想要使用以下功能来处理basic_string<char>basic_string<wchar>我该怎么办? 请注意,它必须在无序映射中更改wchar_t

该函数还需要接受wchar_t数组以支持将参数作为文字传递。

bool isUnique(wstring s)
{
    if (s.size() <= 1)
    {
        return true;
    }
    unordered_map<wchar_t, bool> charSeen;
    for (int i = 0; i < s.size(); i++)
    {
        if (!charSeen[s[i]])
        {
            charSeen[s[i]] = true;
        }
        else
        {
            return false;
        }
    }
    return true;
}
int main(int argc, char *argv[]) {
    cout << isUnique(L"فعه");
    return 0;
}

1 个答案:

答案 0 :(得分:5)

有一个辅助函数接受一个字符指针并委托给传递std::basic_string的主函数:

template<class charT>
bool isUnique(charT const* p)
{
    return isUnique(std::basic_string<charT>(p));
}

然后更改主isUnique函数,对其字符类型设置std::basic_string模板:

template <typename charT>
bool isUnique(std::basic_string<charT>);