// A terabyte is:
// 1 TB = 1,099,511,627,776 bytes (binary, 2⁴⁰)
// 1 TB = 1,000,000,000,000 bytes (decimal, SI)
// Using constexpr
#include <iostream>
#include <locale>
#include <format>
int main() {
// Define a terabyte constant (1 TiB = 2^40 bytes)
constexpr std::size_t TERABYTE = 1ULL << 40;
// Set buffer size to 2 TB
std::size_t buffer_size = 2 * TERABYTE;
// 1. Standard Output (No commas)
std::cout << "buffer_size (no commas): "
<< buffer_size << " bytes\n";
try {
// 2. Imbue locale for comma formatting
std::cout.imbue(std::locale("en_US.UTF-8"));
std::cout << "buffer_size (with imbue): "
<< buffer_size << " bytes\n";
// 3. std::format using the same locale
std::cout << "buffer_size (with format): "
<< std::format(std::locale("en_US.UTF-8"),
"{:L}", buffer_size)
<< " bytes\n";
} catch (const std::runtime_error& e) {
std::cerr << "Locale not supported: " << e.what() << '\n';
}
}
/*
run:
buffer_size (no commas): 2199023255552 bytes
buffer_size (with imbue): 2,199,023,255,552 bytes
buffer_size (with format): 2,199,023,255,552 bytes
*/