c++ - 如何使一个函数同时适用于字符串和 wstring?

标签 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;
}

最佳答案

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

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

然后更改您的主要 isUn​​ique 函数以获取一个以其字符类型为模板的 std::basic_string:

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

关于c++ - 如何使一个函数同时适用于字符串和 wstring?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28662338/

相关文章:

C++,从同一个原始对象复制的多个对象中的成员指针的 'coupling'

c++ - 使用委托(delegate)构造函数时的成员初始化

c++ - 链接错误 1561 visual studio community 2015

unicode - 如何从 Unicode 网站获取完整的 Unicode 表情符号列表

sql - 如何在postgresql中搜索不同的字符集?

c++ - 程序在 cin 之后停止 - C++

c - 如何使用指针数组反转字符串?

python - 如何通过在 Python 3 中作为命令行参数提供的转义序列拆分 UTF-8 字符串?

java - 为什么我无法检查字符串中字符的成员资格?

unicode - 处理网址中的 ą ę 等国家标志? - 你的选择