Intégration de std::string formaté dans des flux de fichiers avec sprintf
Le C moderne rationalise l'intégration de std::strings au format sprintf dans un fichier ruisseaux. Les techniques plus récentes offrent des améliorations significatives par rapport aux méthodes existantes.
C 20
C 20 introduit std::format, permettant un formatage de chaîne simple à l'aide de champs de remplacement de type Python :
#include <iostream> #include <format> int main() { std::cout << std::format("Hello {}!\n", "world"); }
C 11
C 11 std::snprintf fournit une option sûre et conviviale :
#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); }
注意事项
Options supplémentaires
Conclusion
Les techniques C modernes améliorent considérablement les anciennes approches pour incorporer des std::strings formatés dans des flux de fichiers. Opter pour le format std::du C 20 offre la solution la plus simple et la plus sécurisée. std::snprintf de C 11 offre une alternative solide pour la compatibilité ascendante, tandis que des bibliothèques externes comme {fmt} peuvent encore améliorer les fonctionnalités.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!