#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".
答案 0 :(得分:2)
std::string s = isEqual(3,3) ? "true" : "false";
另外:你应该在isEqual中不与0比较,但是像<0.00001
这样的小值
答案 1 :(得分:1)
由于isEqual()
正在返回bool
,您应该只能将其与boolalpha
一起使用:
cout << boolalpha << isEqual(3,3);
修改:我看到您修改了问题以排除上述选项。以下主题中的答案仍然适用:
答案 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;