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
916 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!

source:php.cn
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