gpt4 book ai didi

c++ - ICU DateFormatSymbols::getMonths()

转载 作者:太空宇宙 更新时间:2023-11-04 13:14:13 24 4
gpt4 key购买 nike

我正在开展一个项目,该项目利用 ICU 的库来处理各种语言的日期信息。我在函数中使用以下代码:

UErrorCode uec;
Locale locale(language); // e.g with language = "en"
DateFormatSymbols symbs( locale, uec );
int32_t count;
auto months = symbs.getMonths(count);
for( int32_t i = 0 ; i < count; ++i ){
// some code handling month names, no ICU;
}
// more code that does not use ICU

count 的值应该由 getMonths() 方法设置为获得的月数,例如12 当语言为英语时。

问题是,当我多次调用同一个函数时,count有时是12,有时是0,貌似莫名其妙。更糟糕的是,相同的代码在我同事的 PC 上表现不同,并且当我添加与 symbs 无关的代码行时改变行为,例如创建 UnicodeString 函数中的某处。

我怀疑 DateFormatSymbols 或语言环境的初始化有问题,但我一直无法弄清楚是什么。任何人都可以告诉我为什么会发生这种情况以及如何解决它以便我始终在 count 中获得预期的月数?

最佳答案

你需要初始化uec:

UErrorCode uec;

然后你需要检查它的结果

DateFormatSymbols 符号(语言环境,uec);
如果(U_FAILURE(uec)){
...//处理错误 ...
}

参见 error handling

关于c++ - ICU DateFormatSymbols::getMonths(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38200197/

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