0

我是 C++ 的新手,我真的被这个问题困住了:当用户输入 2 个数字 EX:1 和 2 时,代码必须确定第一个数字是否比第一个数字更大,问题是代码不会将真或假作为文本带来它作为数字:/(0 =假1 =真)

代码在这里:

#include <iostream>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

bool GraterFunct(int num1, int num2);

int main(int argc, char** argv)

{
    std::cout <<" \n Hello there! This is a test to test how good you are with math. \n ";
    std::cout <<" Now enter G or L (Grater, less) to know if a number is grater or less than the number you choose \n ";
    char answer [1];
    std::cin >> answer;

    if(answer == "G" || "g")
    {
        int number1;
        int number2;
        std::cout << "You selected: Grater than, \n";
        std::cout << "Now type 2 numbers and see which one is grater than the other one. \n" << std::endl;
        std::cin >> number1;
        std::cout << "Your first number: " << number1 << std::endl;
        std::cout << "Select your second number \n";
        std::cin >> number2;
        std::cout << "The answer is: " << GraterFunct(number1, number2);
    }

    return 0;
}

bool GraterFunct(int num1, int num2)
{
    if(num1 >= num2)
    {
        {
            return true;
        }
    }
    else
    {
        if(num2 >= num1)
        {
            return false;
        }
    }
}

请帮忙!提前致谢!

4

1 回答 1

1

要将布尔值格式化为truefalse您可以使用操纵器设置std::ios_base::boolalpha标志:std::boolalpha

std::cout << std::boolalpha << "true=" << true << " false=" << false << '\n';

如果您像我一样是非英语母语人士,您可能需要更改这些值的格式。假设安装了合适的语言环境,您可以直接进入流,或者您可以使用任何您想要的渲染创建自己的语言环境,例如imbue()truefalse

#include <iostream>
#include <locale>

class numpunct
    : public std::numpunct<char>
{
    std::string do_truename() const { return "wahr"; }
    std::string do_falsename() const { return "falsch"; }
};

int main()
{
    std::cout.imbue(std::locale(std::locale(), new numpunct));
    std::cout << std::boolalpha << "true=" << true << " false=" << false << '\n';
}

顺便说一句,您始终需要验证您的输入是否成功,例如:

if (std::cin >> number1) {
    // deal with the successful input here
}
else {
    // deal with the wrong input here
}
于 2013-10-02T20:05:25.280 回答