Maison > développement back-end > C++ > Comment puis-je intégrer efficacement des std::strings formatés dans des flux de fichiers en C moderne ?

Comment puis-je intégrer efficacement des std::strings formatés dans des flux de fichiers en C moderne ?

Susan Sarandon
Libérer: 2024-12-18 21:02:15
original
999 Les gens l'ont consulté

How Can I Efficiently Embed Formatted std::strings into File Streams in Modern C  ?

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");
}
Copier après la connexion

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);
}
Copier après la connexion

注意事项

  • Utilisez std::snprintf pour déterminer la taille de tampon requise avant d'écrire dans le char[].
  • Vérifiez toute erreur de formatage après avoir utilisé std::snprintf.
  • Utilisez un unique_ptr pour gérer la mémoire du tableau de caractères alloué.

Options supplémentaires

  • std : :snprintf est renommé _snprintf dans les compilateurs Microsoft.
  • Pour les versions étendues fonctionnalités et fonctionnalités de sécurité, envisagez d'utiliser la bibliothèque {fmt}.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal