Table des matières
✅ Formatage de base de la chaîne
✅ Spécifiez les paramètres par emplacement ou nom (facultatif)
✅ Numéros de format: catégorie, remplir, aligner
✅ Point de contrôle du point flottant
✅ Formatage de date et d'heure (besoin de passer manuellement dans la structure)
✅ Formatage de type personnalisé (utilisation avancée)
? Exigences de compilation
Maison développement back-end C++ C STD :: Exemple de format

C STD :: Exemple de format

Sep 24, 2025 am 01:29 AM
c++

STD :: Format est un outil de formatage moderne introduit par C 20. 1. Prend en charge la mise en forme de la chaîne de base, comme Std :: Format ("Hello, {}!", "World"); 2. Paramètres de référence par emplacement, tels que {0}, {1}; 3. Fournit la conversion numérique ({: #x}, {: #b}), le padding ({: 06}) et l'alignement ({:> 8}); 4. Contrôle la précision du point flottant ({: .2f}) et la notation scientifique ({: .2e}); 5. Le temps de formatage doit être passé dans STD :: TM, tel que {:% y-% m-% d}; 6. Prend en charge les types personnalisés, implémentés en spécialisant dans STD :: Formatter; 7. C 20 doit être activé pour la compilation et assure le support de la bibliothèque standard. Il est recommandé d'utiliser Clang 16 ou MSVC. La bibliothèque est sécurisée et efficace, remplaçant PRINTF et Stringstream, et est recommandée pour une utilisation dans de nouveaux projets.

C STD :: Exemple de format

C 20 présente std::format , une bibliothèque de formatage moderne, de type type et haute performance qui remplace les méthodes de couture printf et stringstream traditionnelles. Il utilise la syntaxe str.format() similaire à Python.

C STD :: Exemple de format

Voici quelques exemples courants d'utilisation du std::format :::


✅ Formatage de base de la chaîne

 #include <iostream>
#include <format>

int main () {
    std :: string name = "Alice";
    Âge int = 30;

    std :: string result = std :: format ("Bonjour, {}! Vous avez {} ans.", nom, âge);
    std :: cout << result << std :: endl;
    // Sortie: Bonjour, Alice! Vous avez 30 ans.
}

✅ Spécifiez les paramètres par emplacement ou nom (facultatif)

 std :: string result = std :: format ("name: {0}, âge: {1}, encore: {0}", "bob", 25);
std :: cout << result << std :: endl;
// Sortie: Nom: Bob, Âge: 25, encore une fois: Bob

// ou utiliser des paramètres nommés (Remarque: STD :: Format ne prend pas directement en charge la syntaxe des paramètres nommés, mais peut être utilisé en combinaison avec des structures / classes)
// mais la "dénomination" logique peut être simulée par ordre variable

✅ Numéros de format: catégorie, remplir, aligner

 std :: cout << std :: format ("hex: {: #x}", 255) << std :: endl; // hex avec préfixe: 0xff
std :: cout << std :: format ("bin: {: #b}", 255) << std :: endl; // binaire: 0b11111111
std :: cout << std :: format ("oct: {: #o}", 255) << std :: endl; // octal: 0377

std :: cout << std :: format ("Padded: {: 06}", 42) << std :: endl; // 000042
std :: cout << std :: format ("à gauche aligné: {: <8}", 42) << std :: endl; // "42"
std :: cout << std :: format ("centré: {: ^ 8}", 42) << std :: endl; // "42"
std :: cout << std :: format ("aligné droit: {:> 8}", 42) << std :: endl; // "42"

✅ Point de contrôle du point flottant

 double pi = 3,14159265;

std :: cout << std :: format ("pi: {: .2f}", pi) << std :: endl; // réserve deux décimales: 3.14
std :: cout << std :: format ("pi: {: .4f}", pi) << std :: endl; // 3.1416
std :: cout << std :: format ("scientific: {: .2e}", pi) << std :: endl; // Méthode de notation scientifique: 3.14E 00

✅ Formatage de date et d'heure (besoin de passer manuellement dans la structure)

Bien que std::format prend en charge les types de temps (de C 20), vous pouvez formater le moment comme celui-ci:

C STD :: Exemple de format
 #include <chrono>

auto maintenant = std :: chrono :: system_clock :: maintenant ();
std :: time_t t = std :: chrono :: system_clock :: to_time_t (maintenant);
std :: tm tm = * std :: localtime (& t);

std :: cout << std :: format ("aujourd&#39;hui: {:% y-% m-% d% h:% m:% s}", tm) << std :: endl;
// La sortie est similaire: aujourd&#39;hui: 2025-04-05 14:30:22

⚠️ Remarque: la prise en charge du std::format pour std::tm exige que le compilateur implémente pleinement <format> du fuseau horaire. Clang 16 / MSVC prend en charge mieux, GCC peut nécessiter -std=c 20 et activer le support expérimental.


✅ Formatage de type personnalisé (utilisation avancée)

Si vous avez une structure personnalisée, vous pouvez vous spécialiser pour std::formatter :

C STD :: Exemple de format
 Struct Point {
    int x, y;
};

modèle <>
struct std :: formatter <point> {
    Consxpr Auto Parse (auto & ctx) {return ctx.begin (); }

    Format automatique (const point & p, auto & ctx) const {
        return std :: format_to (ctx.out (), "({}, {})", px, py);
    }
};

// utilise std :: cout << std :: format ("point: {}", point {1, 2}) << std :: endl;
// Sortie: point: (1,2)

? Exigences de compilation

Assurez-vous que vous utilisez un compilateur C 20 et activez le mode C 20:

  • Clang : clang -std=c 20 -fformat -O2 -Wall
  • GCC : g -std=c 20 -O2 -Wall (Remarque: GCC 13 Prise en charge <format> Plus complet)
  • MSVC : Visual Studio 2022 devrait bien prendre en charge

Si <format> n'est pas trouvé après l'erreur de compilation, il se peut que l'implémentation de la bibliothèque standard soit incomplète. Vous pouvez envisager d'utiliser la bibliothèque {fmt} (en amont du std::format :) comme alternative.


Fondamentalement, ces utilisations courantes. std::format rend le traitement des chaînes C plus sûr et plus concis, et est recommandé pour une utilisation dans de nouveaux projets.

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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT

Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment compiler et exécuter un programme C Comment compiler et exécuter un programme C Sep 16, 2025 am 05:29 AM

Installac compiler likeg usingpackageManagersordevelopmentToolsDenpeningSontheos.2.writeac programme etVeitwitha.cpppextension.3.compilethetrogramusingg hello.cpp-ohelotogenerateanexecuable.4

Comment exécuter une commande système en c Comment exécuter une commande système en c Sep 21, 2025 am 04:35 AM

Utilisez la fonction STD :: System () pour exécuter les commandes système, qui doivent inclure des fichiers d'en-tête et passer dans des commandes de chaîne de style C, telles que STD :: System ("LS-L"), et la valeur de retour est -1, ce qui signifie que le processeur de commande n'est pas disponible.

C Exemple d'allocateur personnalisé C Exemple d'allocateur personnalisé Sep 17, 2025 am 08:45 AM

L'allocateur personnalisé peut être utilisé pour contrôler le comportement d'allocation de mémoire des conteneurs C. 1. Le journal de journalisation dans l'exemple implémente la journalisation de l'opération de mémoire en surchargeant l'allocation, la transmission, la construction et la détruire des méthodes; 2. L'allocateur doit définir des modèles Value_Type et Rebind pour répondre aux exigences de conversion du type de conteneur STL; 3. L'allocateur déclenche la sortie du journal pendant la construction et la copie, ce qui est pratique pour suivre le cycle de vie; 4. Les applications réelles incluent des pools de mémoire, de la mémoire partagée, des outils de débogage et des systèmes intégrés; 5. Depuis C 17, Construct and Destroy peut être traité par STD :: ALLOCATOR_TRAITS par défaut

Comment implémenter un itérateur personnalisé en C Comment implémenter un itérateur personnalisé en C Sep 20, 2025 am 01:13 AM

La réponse est de définir une classe qui contient les alias et les opérations de type nécessaire. Tout d'abord, définissez la valeur_type, référence, pointeur, différence_type et iterator_category, puis implémentez les opérations de déréférence, d'incrément et de comparaison. Enfin, fournissez des méthodes begin () et end () dans le conteneur pour renvoyer l'instance itérateur, ce qui le rend compatible avec les algorithmes STL et la plage pour les boucles.

Pourquoi les systèmes en temps réel ont-ils besoin de garanties de réponse déterministe? Pourquoi les systèmes en temps réel ont-ils besoin de garanties de réponse déterministe? Sep 22, 2025 pm 04:03 PM

Les systèmes en temps réel nécessitent des réponses déterministes, car l'exactitude dépend du délai de livraison des résultats; Les systèmes durs en temps réel nécessitent des délais stricts, manqués entraînera des catastrophes, tandis que le temps réel doux permet des retards occasionnels; Des facteurs non déterministes tels que la planification, les interruptions, les caches, la gestion de la mémoire, etc. affectent le calendrier; Le plan de construction comprend la sélection des RTO, l'analyse WCET, la gestion des ressources, l'optimisation matérielle et les tests rigoureux.

C Exemple de classe abstrait C Exemple de classe abstrait Sep 15, 2025 am 05:55 AM

Une classe abstraite est une classe contenant au moins une fonction virtuelle pure. Il ne peut pas être instancié et doit être hérité en tant que classe de base. La classe dérivée doit implémenter toutes ses fonctions virtuelles pures, sinon il sera toujours une classe abstraite. 1. Les fonctions virtuelles pures sont déclarées par le type de type de retour virtuel Nom () = 0; pour définir les spécifications de l'interface; 2. 3. Des destructeurs virtuels doivent être fournis pour les classes abstraites (telles que Virtual ~ Shape () = par défaut;) pour s'assurer que les objets de classe dérivés sont correctement libérés via des pointeurs de classe de base; 4. Une fois la classe dérivée héritée, les fonctions virtuelles pures doivent être réécrites, telles que le rectangle et le cercle pour implémenter la zone () pour calculer leurs zones respectives; 5

Comment lire un fichier entier dans une chaîne en C Comment lire un fichier entier dans une chaîne en C Sep 18, 2025 am 06:07 AM

Utilisez Std :: ifstream et STD :: ISTREAMBUF_ITERATOR pour lire efficacement le contenu entier du fichier vers les chaînes, y compris les espaces et les pauses de ligne, et convient aux fichiers texte de taille moyenne.

Comment créer une variable statique en C Comment créer une variable statique en C Sep 19, 2025 am 05:24 AM

AstaticvariableInc conserve la valeur de l'entreprise entre la fonctionnalités et les étatsinitializedEnce.2

See all articles