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

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