我正在使用std::iswalpha
检查非ASCII字符(法语字符)是否为字母。但是,我发现它返回false
表示é
字符。我在代码中将区域设置设置为fr_FR.UTF-8
。您能帮助我理解为什么会发生这种情况,以及如何使用C++正确确定法语字符是否为字母吗?
#include <iostream>
#include <cwctype>
int main() {
std::setlocale(LC_ALL, "fr_FR.UTF-8");
wchar_t ch = L'é';
bool is_alpha = std::iswalpha(ch);
std::cout << is_alpha << std::endl; // print 0
return 0;
}
1条答案
按热度按时间nwlqm0z11#
这是因为安装语言环境失败了,但是您没有检查它。
在Compiler Explorer中运行此命令会打印
locale: No such file or directory
,同时在安装了fr_FR.UTF-8
环境的本地计算机上运行此命令会成功打印1
: