Boolean to String并将boolalpha与方法相结合,而不必在打印时单独输入

时间:2011-11-02 16:09:23

标签: c++

#include <iostream>
#include <cmath>
#include <string>
using namespace std;

string STRING;

     bool isEqual(double a, double b)
    {
        return  fabs(a-b) ==0;
    }

int main()
{
   STRING = isEqual(3,3); <--------HERE'S THE MAIN PROBLEM

cout << STRING;


    return 0;
}

我无法设置我从布尔值得到的输出,无论是“真”还是“1”等于字符串。也可以使用boolalpha并将其与“isEqual()”结合使用 所以我可以输入

cout <<isEqual(3,3) and it gives me "true" 
instead of having to type "cout << boolalpha<<isEqual(3,3) everytime".

4 个答案:

答案 0 :(得分:2)

std::string s = isEqual(3,3) ? "true" : "false";

另外:你应该在isEqual中不与0比较,但是像<0.00001这样的小值

答案 1 :(得分:1)

由于isEqual()正在返回bool,您应该只能将其与boolalpha一起使用:

cout << boolalpha << isEqual(3,3);

修改:我看到您修改了问题以排除上述选项。以下主题中的答案仍然适用:

另外:Converting bool to text in C++

答案 2 :(得分:0)

有可能吗?是的,如果你可以将函数的返回类型更改为一个隐式转换为bool或string的包装器。

但这不是一个好主意。

c ++是强类型的。学会使这项工作对你有利。

答案 3 :(得分:0)

您的代码中存在一个小问题:

STRING = isEqual(3,3); <--------HERE'S THE MAIN PROBLEM

应该是

STRING = isEqual(3,3); <--------THIS IS JUST WRONG, I'M TRYING TO ASSIGN A BOOLEAN TO A STRING

你为什么要这样做?我确信有更优雅的方法可以做到这一点。 (在答案中提出)。我就是这样做的:

   bool areTheyEqual = isEqual(3,3);
   cout << boolalpha << areTheyEqual << endl;

或简单地说:

   cout << boolalpha << isEqual(3,3) << endl;