C++ C++;如何检查字母是否为字母(非拉丁字母)

C++ C++;如何检查字母是否为字母(非拉丁字母),c++,string,character-encoding,C++,String,Character Encoding,所以我需要看看我的角色是不是一个字母。我尝试使用isalpha()函数,但是,如果我尝试传递非拉丁字母(例如ą,č,ę,ė,į,š,ų,ū,ž),我会得到一个错误,似乎表明isalpha函数只接受ASCII代码中介于0和255之间的字符。有没有办法克服这个问题 您可以使用。以链接参考为例: #include <iostream> #include <locale> int main() { const wchar_t c = L'\u042f'; // cyril

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

您可以使用。以链接参考为例:

#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';
}

@MohitBhasi:实际上,复制/粘贴了代码。就像我说的,它来自链接页面。
isalpha('Я​', C locale) returned false
isalpha('Я', Unicode locale) returned true