Maison  >  Article  >  développement back-end  >  Comment imprimer des valeurs booléennes en C sous forme de chaînes au lieu d’entiers ?

Comment imprimer des valeurs booléennes en C sous forme de chaînes au lieu d’entiers ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-28 09:03:02634parcourir

How do I print boolean values in C   as strings instead of integers?

Impression de booléens en C : décodage de l'affichage

Lors de l'impression d'une valeur booléenne sur un flux de sortie en C, la norme fournit des lignes directrices pour le résultat affiché.

Le manipulateur boolalpha

Par défaut, std::cout affiche les valeurs booléennes sous forme d'entiers, 0 représentant faux et 1 pour vrai. Cependant, le manipulateur std::boolalpha modifie ce comportement, demandant au flux d'afficher les booléens sous forme de chaînes : false et true.

Pour activer ce changement, utilisez std::cout << std::boolalpha;:

<code class="cpp">#include <iostream>
#include <iomanip>

int main() {
    std::cout << false << "\n";  // Prints 0
    std::cout << std::boolalpha;
    std::cout << false << "\n";  // Prints false
    return 0;
}

Représentation spécifique à la localisation

La norme permet également une représentation localisée des valeurs booléennes. En imprégnant le flux des paramètres régionaux appropriés, vous pouvez imprimer les booléens tels qu'ils apparaissent dans d'autres langues. Par exemple, en français, boolalpha afficherait faux et vrai au lieu de faux et vrai.

Pour utiliser cette fonctionnalité, imprégnez le flux d'une langue prenant en charge la langue souhaitée :

<code class="cpp">#include <iostream>
#include <iomanip>
#include <locale>

int main() {
    std::cout.imbue(std::locale("fr"));
    std::cout << false << "\n";  // Prints 0
    std::cout << std::boolalpha;
    std::cout << false << "\n";  // Prints faux
    return 0;
}

Facette Numpunct personnalisée

Si vous avez besoin d'un contrôle précis sur la représentation des valeurs booléennes, vous pouvez créer une facette std::numpunct personnalisée. Cela vous permettra de définir les chaînes exactes affichées pour les valeurs vraies et fausses.

Voici un exemple pour le français :

#include 
#include 
#include 
#include 
#include 

class my_fr : public std::numpunct< char > {
protected:
    char do_decimal_point() const { return ','; }
    char do_thousands_sep() const { return '.'; }
    std::string do_grouping() const { return ""; }
    std::string do_truename() const { return "vrai";  }
    std::string do_falsename() const { return "faux"; }
};

int main() {
    std::cout.imbue(std::locale(std::locale(), new my_fr));
    std::cout << false << "\n";  // Prints 0
    std::cout << std::boolalpha;
    std::cout << false << "\n";  // Prints faux
    return 0;
}

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:
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