2014-06-05 3 views
1
여기

는 코드부스트 :: 로케일 ::

std::wstring aResult; 

boost::locale::generator gen; 
std::locale::global(gen("")); 

std::wostringstream output; 
output.imbue(std::locale()); 

boost::locale::date_time aTime(x); 

output << boost::locale::as::date_short << aTime; 

aResult = output.str(); 
입니다

문제는 출력이 항상 날짜 로케일에 의해 지정된 형식과

  • 을 줄 것입니다 로 : date_short

  • 로 ::로

  • 을 date_long :: date_middle

은 항상 동일한 결과를 제공합니다.

여기에 어떤 사례가있을 수 있습니까?

감사합니다.

답변

2

아마도 시스템에/불완전한 로케일 정의가 있음을 나타냅니다.

예. 이 프로그램은 :

#include <boost/locale.hpp> 
#include <string> 

int main() 
{ 
    std::wstring aResult; 

    boost::locale::generator gen; 
    std::locale::global(gen("C")); 

    std::wcout.imbue(std::locale()); 

    boost::locale::date_time aTime; 

    std::wcout << std::endl << boost::locale::as::date_full << aTime; 
    std::wcout << std::endl << boost::locale::as::date_short << aTime; 
    std::wcout << std::endl << boost::locale::as::date_medium << aTime; 
} 

인쇄, 내 우분투 상자 :

Thursday, June 5, 2014 3:06:27 PM 
6/5/14 3:06:27 PM 
Jun 5, 2014 3:06:27 PM 

그러나 Live On Coliru (데비안에서 실행되는) 동일한 코드를 인쇄 :

Thu Jun 5 13:07:04 2014 
Thu Jun 5 13:07:04 2014 
Thu Jun 5 13:07:04 2014 
+0

많이 설명하고 그! 감사. Mac OS에서 로케일에 몇 가지 버그가보고되었습니다. 그래서이 직원들을 위해 탄소 라이브러리를 사용할 것입니다. – user1635583