2016-07-05 2 views
1

ICU의 라이브러리를 사용하여 다양한 언어의 날짜 정보를 처리하는 프로젝트를 진행 중입니다. I 함수에 다음 코드를 사용ICU DateFormatSymbols :: getMonths()

count의 값은 예를 들면 얻어진 월수, 같은 getMonths() 방법으로 설정하도록되어
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 

언어가 영어 인 경우 12.

동일한 기능을 여러 번 호출 할 때 가끔 count이 12이고 때로는 0 인 것처럼 보일 수도 있습니다. 더 나쁜 것은 동일한 코드가 제 동료의 PC에서 다르게 동작하고 과 아무 관련이없는 코드 행을 추가 할 때 동작이 바뀌는 것입니다 (예 : UnicodeString).

DateFormatSymbols 또는 로케일의 초기화로 인해 문제가있는 것으로 의심되지만, 내 인생에서 나는 무엇을 알 수 없습니다. 누구나 왜 이런 일이 일어날 지 그리고 어쩌면 어떻게 고쳐야 할 지 말해 주시겠습니까? 그래서 나는 항상 예상 달 수를 얻으실 수 있습니다 count?

답변

0

당신은 uec를 초기화해야합니다

UErrorCode uec;

을 그리고 당신은

DateFormatSymbols symbs(locale, uec); if (U_FAILURE(uec)) { … // handle error …  }

error handling

를 참조 그 결과를 확인해야합니다