2017-12-15 4 views
3

올바른 숫자 구분 기호 ('또는', ')로 csv 파일을 생성하려면 컴퓨터에 설치된 Excel 버전과 호환되기를 원하기 때문에 C++ 프로그램의 소수 구분 기호 문자.STL을 사용하여 시스템의 소수점 구분 문자를 얻으십시오

내 컴퓨터에 프랑스어 버전의 Windows/Excel이 있으므로 소수 구분 기호는 ','입니다. I는 WIN32 API를 사용하여 시도

예상되지

int main() 
{ 
    std::cout << std::use_facet< std::numpunct<char> >(std::cout.getloc()).decimal_point(); 
    return 0; 
} 

출력 . :

int main() 
{ 
    TCHAR szSep[8]; 
    GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SDECIMAL, szSep, 8); 
    std::cout << szSep; 
} 

출력 , 예상된다.

main 내부에서 작동하는 STL의 GetLocaleInfo 기능과 동일한 기능이 있습니까?

+2

['표준 : locale'] (http://en.cppreference.com/w/cpp/locale/locale) 그 정보를 휴대용 방식으로 제공합니다. – user0042

+0

@ user0042 링크를 기반으로 한 답변은 권장하지 않으므로 댓글로 답하고 있습니다. 마이그레이션해야한다고 생각합니다. – UKMonkey

+0

@UKMonkey하지만 OP가 사용하는 것은 실제로'std :: locale' 설정을 기반으로하는 것처럼 보입니다. 그래서 대답으로 쓰지 않았습니다. – user0042

답변

0

덕분 예 연결된 user0042 방법이 사용 STL을 수행하는 적절한 방법은 다음 예상

int main() 
{ 
    // replace the C++ global locale as well as the C locale with the user-preferred locale 
    std::locale::global(std::locale("")); 
    // use the new global locale for future wide character output 
    std::cout.imbue(std::locale()); 

    std::cout << std::use_facet< std::numpunct<char> >(std::cout.getloc()).decimal_point(); 
} 

출력 ,.

또는 전역을 변경하지 않는 경우 :

int main() 
{ 
    std::cout.imbue(std::locale("")); 
    std::cout << std::use_facet< std::numpunct<char> >(std::cout.getloc()).decimal_point(); 
} 
관련 문제