gpt4 book ai didi

c++ - 获取 QLocale::Country 的国家/地区代码

转载 作者:行者123 更新时间:2023-12-01 22:17:41 31 4
gpt4 key购买 nike

我正在尝试查找给定 QLocale::Country 的国家/地区代码值(value)。在手册中我只找到了这个函数,它执行类似的操作:QLocale::name .

QString QLocale::name () const

Returns the language and country of this locale as a string of the form "language_country", where language is a lowercase, two-letter ISO 639 language code, and country is an uppercase, two- or three-letter ISO 3166 country code.

返回值的第二部分正是我所需要的,所以我构造了以下函数:

QString getCountryCode(QLocale::Country c)
{
return QLocale(QLocale::AnyLanguage, c).name().split('_').at(1).toLower();
}

奇怪的是,如果我按以下方式调用此函数:

qDebug() << getCountryCode(QLocale::Canada);

它将产生以下输出:

"us"

我已经预料到“ca”了!另一方面,如果我这样调用它:

qDebug() << getCountryCode(QLocale::Hungary);

然后它将产生正确的答案:

"hu"

我在这里缺少什么? (我使用的是Qt 5.2)

最佳答案

一般来说,鉴于您想要的功能无法直接提供,请submit a feature request在错误追踪器上。

除此之外,您无法使用 AnyLanguage 构建 QLocale 对象。这绝对没有意义——QLocale 对象完全标识一个特定语言环境。加拿大应该选择哪一个:fr_CA 还是 en_CA

解决方案:使用

QList<QLocale> locales = QLocale::matchingLocales(QLocale::AnyLanguage,
QLocale::AnyScript,
QLocale::Canada);

然后获取列表中的第一个(如果存在)并按照您的操作提取国家/地区名称。

关于c++ - 获取 QLocale::Country 的国家/地区代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24109270/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com