我正在学习C ++,遇到一个问题link,它说bool是C ++中的基本数据类型,但是当我打印true或false的值时,结果是1或0。我期望true或错误。
我决定重载<<操作符以打印true
字符串以获取布尔值,而false
字符串以false值显示,但是当我重载该函数时,我得到了一个错误error: ambiguous overload for 'operator<<' (operand types are 'std::basic_ostream<char>' and 'bool')
< / p>
我相信这是因为<<已被重载以输出1表示true,0表示false。当bool是基本数据类型时,打印1表示true并打印0表示false是不是错误?
仅是为了澄清投票人,不是我不能使它起作用,我想问一下为什么它被设计成以这种方式起作用。如果您看到流行语言(例如python),则不是这种情况。
答案 0 :(得分:3)
尝试一下:
bool b1 = false;
bool b2 = true;
std::cout << std::boolalpha << b1 << std::endl;
std::cout << std::noboolalpha << b1 << std::endl;
std::cout << std::boolalpha << b2 << std::endl;
std::cout << std::noboolalpha << b2 << std::endl;
输出:
false
0
true
1