2011-11-24 170 views
21

我重載了equals(包括==和!=),它檢查兩個對象是否相等,然後返回一個布爾值。C++ bool返回0 1而不是true false

不幸的是,它打印0或1.我知道這是正確的,但我無法弄清楚爲了可讀性目的打印真假的方法。

我甚至試過:

if (a.equals(b)) 
{ 
    return true; 
} 

return false; 

然而,C++是足夠固執地輸出0或1

任何幫助,將不勝感激。

編輯 - 打印完成:

cout << "a == b is " << (a == b) << endl; 

所需的輸出是

一個== b爲真

+4

你怎麼_printing_呢? – SLaks

+0

有人糾正我,如果我錯了,但不是布爾只是一個uint枚舉? – dubvfan87

+0

@dubvfan否,'sizeof(布爾)== 1'在我的平臺上,所以不是'uint'。但他們真的只有1和0。 –

回答

42

您可以使用std::boolalpha

集boolalpha格式標誌爲str流。

當設置了boolalpha格式標誌時,bool值爲 插入/提取爲它們的名稱:true和false,而不是整數 值。

此標誌可以用n​​oboolalpha操縱器取消設置。

boolalpha標誌在初始化時未在標準流中設置。

std::cout.setf(std::ios::boolalpha); 
std::cout << true; 

std::cout << std::boolalpha << true; 
6

您需要使用std::boolalpha

cout << boolalpha << yourthing() << endl; 
6

您需要使用std::boolalpha打印真/假:

#include <iostream> 

int main() 
{ 
    std::cout << std::boolalpha << true << std::endl; 
} 
0

如果你需要做這個流輸出<<之外,這是一個簡單的三元表達式:

std::string str = (a == b) ? "true" : "false";