如何将C++中bool值输出的1/0改为true/false?
问题:C++中输出bool类型时替换1/0为true/false
我完成了一项作业,现在程序里输出bool类型时会显示1或0,想要改成输出true或false。这是个多文件程序,以下是当前的输出示例和main.cpp代码,求修改建议。
当前输出
1 = true, 0 = false ------------ c1 >= c2 : 1 c1 <= c2 : 0 c1 != c2 : 1 c1 < c2 : 0 c1 > c2 : 1 c1 == c2 : 0
现有main.cpp代码
int main() { // 声明两个圆的半径用于比较 Circle c1(7); Circle c2(6); // 输出布尔值(当前显示1或0) bool compare; cout << "1 = true, 0 = false" << endl; cout << "------------" << endl; compare = c1 >= c2; cout<< "c1 >= c2 : "<< compare << endl; compare = c1 <= c2; cout<< "c1 <= c2 : "<< compare << endl; compare = c1 != c2; cout << "c1 != c2 : " << compare << endl; compare = c1 < c2; cout<< "c1 < c2 : " << compare << endl; compare = c1 > c2; cout << "c1 > c2 : " << compare << endl; compare = c1 == c2; cout << "c1 == c2 : " << compare << endl; cout << endl; }
解决方案
方法1:使用std::boolalpha(推荐)
C++标准库自带的std::boolalpha操纵符可以直接让cout输出bool类型时显示true或false,只需要在输出布尔值前添加一行代码:
cout << boolalpha;
修改后的完整main.cpp代码:
#include <iostream> using namespace std; int main() { Circle c1(7); Circle c2(6); bool compare; cout << boolalpha; // 启用bool值的文本输出模式 cout << "true = 真, false = 假" << endl; cout << "------------" << endl; compare = c1 >= c2; cout<< "c1 >= c2 : "<< compare << endl; compare = c1 <= c2; cout<< "c1 <= c2 : "<< compare << endl; compare = c1 != c2; cout << "c1 != c2 : " << compare << endl; compare = c1 < c2; cout<< "c1 < c2 : " << compare << endl; compare = c1 > c2; cout << "c1 > c2 : " << compare << endl; compare = c1 == c2; cout << "c1 == c2 : " << compare << endl; cout << endl; }
如果之后需要恢复默认的1/0输出,用cout << noboolalpha;即可。
方法2:三元运算符手动输出
不想用标准库操纵符的话,输出时直接用三元运算符判断并输出对应字符串:
cout<< "c1 >= c2 : "<< (compare ? "true" : "false") << endl;
修改后的输出行示例:
compare = c1 >= c2; cout<< "c1 >= c2 : "<< (compare ? "true" : "false") << endl; compare = c1 <= c2; cout<< "c1 <= c2 : "<< (compare ? "true" : "false") << endl; // 其余输出行按同样方式修改
方法3:封装辅助函数
如果多处需要输出bool的文本形式,封装一个小函数更方便:
const char* boolToString(bool value) { return value ? "true" : "false"; }
输出时调用该函数:
cout<< "c1 >= c2 : "<< boolToString(compare) << endl;
内容的提问来源于stack exchange,提问作者user20544996
相关产品推荐
相关产品推荐

