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é.
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; }
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; }
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!