#include <iostream>
#include <locale>
int main() {
char upper_cyrillic = 'А';
std::locale loc("ru_RU.UTF-8");
char lower_cyrillic = std::tolower(upper_cyrillic, loc);
std::cout << lower_cyrillic << std::endl;
return 0;
}
我尝试了ChatGPT提供的所有选项,但它们都不起作用。
2条答案
按热度按时间jhdbpxl91#
假设一个实现知道西里尔文,并且能够识别该语言环境的名称,那么您就相当接近于工作代码了。
结果:
Test on Coliru
作为旁注,是的,它可能看起来像设置全局区域设置应该是不必要的(我更希望它是),但如果没有它,它会将结果翻译为英语字符,所以(例如)
'Д'
变成'D'
。就UTF-8编码而言,您通常会通过将UT 8 -8转换为UTF-16或UTF-32来处理,内部操作,然后(如果需要)转换回UTF-8以进行输出,类似于以下内容:
结果:
Test on Coliru
在Ubuntu 22.04上用gcc 11.3.0测试。
dced5bon2#
char
只用于“普通”字符。如果需要更多,请研究宽字符,unicode,UTF-8,UTF-16和UTF-32。您可以使用宽字符,例如: