> 백엔드 개발 > C++ > std::locale 및 std::stringstream을 사용하여 C에서 쉼표로 숫자 형식을 지정하려면 어떻게 해야 합니까?

std::locale 및 std::stringstream을 사용하여 C에서 쉼표로 숫자 형식을 지정하려면 어떻게 해야 합니까?

Barbara Streisand
풀어 주다: 2024-10-29 18:13:03
원래의
319명이 탐색했습니다.

How can I format numbers with commas in C   using std::locale and std::stringstream?

C에서 쉼표를 사용하여 숫자 서식 지정: 포괄적인 솔루션

C에서 쉼표로 숫자 서식을 지정하는 것은 가독성을 높이고 숫자 값의 명확성. 이 기사에서는 std::locale과 std::stringstream의 조합을 사용하여 이를 달성하기 위한 강력한 방법을 제시합니다.

해결책

우리 솔루션의 핵심은 다음에 있습니다. std::locale을 활용하여 지역화된 서식 컨텍스트를 설정하고 std::stringstream을 활용하여 서식이 지정된 결과를 캡처합니다. 일반 숫자 유형 T를 사용하는 FormatWithCommas 템플릿 메소드는 다음 단계를 따릅니다.

  1. ss라는 std::stringstream 객체를 만듭니다.
  2. imbue를 호출하여 ss에 대한 로케일을 설정합니다. (표준::로케일("")). 이는 일반적으로 로케일에 적합한 숫자 형식 지정 규칙을 제공하는 기본 시스템 로케일을 사용합니다.
  3. 연산자<<를 사용하여 ss에 숫자 값 값을 삽입합니다. std::fixed를 사용하여 고정 정밀도를 지정합니다.
  4. ss에서 str()을 호출하여 형식이 지정된 값의 문자열 표현을 반환합니다.

다음은 FormatWithCommas 메서드에 대한 전체 코드입니다. :

<code class="cpp">template<class T>
std::string FormatWithCommas(T value)
{
    std::stringstream ss;
    ss.imbue(std::locale(""));
    ss << std::fixed << value;
    return ss.str();
}
로그인 후 복사

사용 예

우리의 방법을 사용하는 것은 간단합니다. 예:

<code class="cpp">std::string result1 = FormatWithCommas(7800);
std::string result2 = FormatWithCommas(5100100);
std::string result3 = FormatWithCommas(201234567890);
// Outputs:
// result1 = "7,800"
// result2 = "5,100,100"
// result3 = "201,234,567,890"
로그인 후 복사

Double 처리

제공된 메서드는 Doubles도 처리하도록 쉽게 수정할 수 있습니다. 템플릿 선언에서 T를 double로 바꾸기만 하면 됩니다.

template<>
std::string FormatWithCommas(double value)
{
    std::stringstream ss;
    ss.imbue(std::locale(""));
    ss << std::fixed << value;
    return ss.str();
}

이식성 고려 사항

로케일을 지정하기 위해 ""를 사용하는 것이 완전하지 않을 수 있다는 점에 유의할 가치가 있습니다. 다양한 시스템에 걸쳐 이식 가능합니다. 일관된 동작을 보장하려면 원하는 로캘을 명시적으로 지정하는 것이 좋습니다.

위 내용은 std::locale 및 std::stringstream을 사용하여 C에서 쉼표로 숫자 형식을 지정하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿