所以我需要看看我的角色是否是字母。我尝试使用isalpha()函数,但是,如果我尝试不传递拉丁字母(例如±,č,ę,ė,į,š,ų,ū,ž),则会收到错误消息,似乎表明isalpha函数仅接受ASCII码在0到255之间的字符。有什么方法可以解决此问题?

最佳答案

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

09-10 00:05