Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya boleh memformat nombor dengan koma dalam C menggunakan std::locale dan std::stringstream?

Bagaimanakah saya boleh memformat nombor dengan koma dalam C menggunakan std::locale dan std::stringstream?

Barbara Streisand
Lepaskan: 2024-10-29 18:13:03
asal
318 orang telah melayarinya

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

Formatkan Nombor dengan Koma dalam C : Penyelesaian Komprehensif

Dalam C , memformat nombor dengan koma ialah tugas biasa yang meningkatkan kebolehbacaan dan kejelasan nilai angka. Artikel ini membentangkan kaedah yang mantap untuk mencapainya menggunakan gabungan std::locale dan std::stringstream.

Penyelesaian

Inti penyelesaian kami terletak pada memanfaatkan std::locale untuk mewujudkan konteks pemformatan setempat dan std::stringstream untuk menangkap hasil yang diformatkan. Kaedah templat FormatWithCommas, yang mengambil jenis angka generik T, mengikut langkah berikut:

  1. Buat objek std::stringstream bernama ss.
  2. Tetapkan tempat untuk ss dengan memanggil imbue (std::locale("")). Ini akan menggunakan tempat sistem lalai, yang biasanya menyediakan peraturan pemformatan nombor yang sesuai dengan tempat.
  3. Masukkan nilai nilai angka ke dalam ss menggunakan operator<< dan tentukan ketepatan tetap menggunakan std::fixed.
  4. Kembalikan perwakilan rentetan nilai yang diformatkan dengan memanggil str() pada ss.

Berikut ialah kod lengkap untuk kaedah 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();
}
Salin selepas log masuk

Contoh Penggunaan

Menggunakan kaedah kami adalah mudah. Contohnya:

<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"
Salin selepas log masuk

Mengendalikan Beregu

Kaedah yang disediakan boleh diubah suai dengan mudah untuk mengendalikan beregu juga. Hanya gantikan T dengan dua kali ganda dalam pengisytiharan templat:

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

Pertimbangan Mudah Alih

Perlu diperhatikan bahawa penggunaan "" untuk menentukan tempat mungkin tidak sepenuhnya mudah alih merentasi sistem yang berbeza. Untuk memastikan tingkah laku yang konsisten, pertimbangkan untuk menyatakan secara eksplisit tempat yang dikehendaki.

Atas ialah kandungan terperinci Bagaimanakah saya boleh memformat nombor dengan koma dalam C menggunakan std::locale dan std::stringstream?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan