Membenamkan std::rentetan Berformat dalam Strim Fail dengan sprintf
C Moden memperkemas penyepaduan std::rentetan berformat sprintf ke dalam fail aliran. Teknik yang lebih baharu menawarkan peningkatan ketara berbanding kaedah lama.
C 20
C 20 memperkenalkan std::format, membolehkan pemformatan rentetan mudah menggunakan medan gantian seperti python:
#include <iostream> #include <format> int main() { std::cout << std::format("Hello {}!\n", "world"); }
C 11
C 11's std::snprintf menyediakan pilihan yang selamat dan mesra pengguna:
#include <memory> #include <string> #include <stdexcept> template<typename ... Args> std::string string_format(const std::string& format, Args ... args) { int size_s = std::snprintf(nullptr, 0, format.c_str(), args ...) + 1; if (size_s <= 0) { throw std::runtime_error("Error during formatting."); } size_t size = static_cast<size_t>(size_s); std::unique_ptr<char[]> buf(new char[size]); std::snprintf(buf.get(), size, format.c_str(), args ...); return std::string(buf.get(), buf.get() + size - 1); }
注意事项
Tambahan Pilihan
Kesimpulan
Teknik C Moden bertambah baik dengan ketara apabila pendekatan lama untuk menggabungkan std::string berformat ke dalam strim fail. Memilih C 20's std::format menyediakan penyelesaian yang paling diperkemas dan selamat. C 11's std::snprintf menawarkan alternatif yang kukuh untuk keserasian ke belakang, manakala perpustakaan luaran seperti {fmt} boleh meningkatkan lagi fungsi.Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membenamkan std::strings Terformat dengan Cekap ke dalam Strim Fail dalam C Moden?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!