Maison > développement back-end > C++ > Comment imprimer correctement std :: strings avec printf ?

Comment imprimer correctement std :: strings avec printf ?

Barbara Streisand
Libérer: 2024-12-26 11:11:11
original
891 Les gens l'ont consulté

How to Correctly Print std::strings with printf?

Comment utiliser printf avec std::string

Lorsque vous essayez d'utiliser printf avec un std::string, vous pouvez rencontrer comportement inattendu tel que l'impression de chaînes apparemment aléatoires au lieu de la valeur std::string prévue.

Cela se produit car printf est une fonction C qui opère sur des chaînes de style C, tandis que std::string est un objet C gérant la mémoire allouée dynamiquement. Pour remédier à cela, il existe plusieurs approches :

Utilisation de std::cout:

La solution la plus simple consiste à utiliser std::cout, qui prend en charge la surcharge des opérateurs pour std::string, vous permettant de l'imprimer directement :

std::cout << "Follow this command: " << myString;
Copier après la connexion

En utilisant c_str() :

Si vous devez extraire la chaîne de style C terminée par un caractère nul de std::string, vous pouvez utiliser la méthode c_str() :

printf("Follow this command: %s", myString.c_str());
Copier après la connexion

En utilisant std::format:

Pour le C moderne (C 20 et versions ultérieures), vous pouvez profiter de std::format, qui fournit un moyen polyvalent et sécurisé de formater des chaînes :

std::cout << "Follow this command: " << std::format("{}", myString);
Copier après la connexion

Utilisation de modèles variadiques :

Si vous avez besoin de plus de contrôle sur le format de sortie, vous pouvez envisager d'utiliser des modèles variadiques. Cependant, il n'y a pas de fonction intégrée dans la bibliothèque standard similaire à printf qui utilise des modèles variadiques.

Utilisation de Boost.Format :

Boost fournit une bibliothèque d'en-tête uniquement appelé Boost.Format, qui offre un moyen alternatif d'effectuer un formatage de type printf à l'aide de modèles variadiques.

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