【问题标题】:C++ How to check if letter isalpha (not latin alphabet)C ++如何检查字母是否为alpha(不是拉丁字母)
【发布时间】:2015-02-02 16:34:58
【问题描述】:

所以我需要看看我的角色是不是一个字母。我尝试使用 isalpha() 函数,但是,如果我尝试传递的不是拉丁字母(例如 ą、č、ę、ė、į、š、ų、ū、ž),我得到一个错误,这似乎表明 isalpha函数只接受 ASCII 码中介于 0 到 255 之间的字符。有没有办法克服这个问题?

【问题讨论】:

    标签: c++ string character-encoding


    【解决方案1】:

    您可以使用locale version of std::isalpha。以链接参考为例:

    #include <iostream>
    #include <locale>
    int main()
    {
        const wchar_t c = L'\u042f'; // cyrillic capital letter ya
    
        std::locale loc1("C");
        std::cout << "isalpha('Я​', C locale) returned "
                   << std::boolalpha << std::isalpha(c, loc1) << '\n';
    
        std::locale loc2("en_US.UTF8");
        std::cout << "isalpha('Я', Unicode locale) returned "
                  << std::boolalpha << std::isalpha(c, loc2) << '\n';
    }
    

    输出:

    isalpha('Я​', C locale) returned false
    isalpha('Я', Unicode locale) returned true
    

    【讨论】:

    • @MohitBhasi:实际上是复制/粘贴了代码。就像我说的,它来自链接页面。
    猜你喜欢
    • 1970-01-01
    • 2016-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    相关资源
    最近更新 更多