C++ 如何检查字母是否为阿尔法(不是拉丁字母)



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

您可以使用 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

最新更新