cout打印不正确的值

时间:2018-01-17 01:01:13

标签: c++ hex cin cout

所以,我正在尝试制作一个转换Base 10的基本C ++程序 - >基数16

while(true){
    int input;
    cout << "Enter the base 10 number\n";
    cin >> input;
    cout << "The hex form of " << input << " is: ";
    int decimal = input;
    cout << hex << uppercase << decimal << "\n";
    decimal = NULL;
    input = NULL;
    Sleep(3000);
}

并且在第一次运行时它起作用。例如,如果我输入7331,我会得到:

The hex form of 7331 is 1CA3

但如果我第二次尝试(使用相同的输入),我会得到:

The hex form of 1CA3 is 1CA3

我可以尝试使用任何整数输入,它可以在第一次运行时正常工作,但之后它将基数为16的数字放入两次。

3 个答案:

答案 0 :(得分:1)

您需要重置您的信息流。将std::hex应用于std::cout时,它会永久应用于流(std :: cout),您需要重置它。您只需将程序更改为:

cout << "The hex form of " << std::dec << input << " is: ";

答案 1 :(得分:0)

你的FIX:

cout << "The hex form of "<< dec << input << " is: ";

答案 2 :(得分:0)

你甚至可以缩短你的代码:

while (true)
{
    int input;

    cout << "Enter the base 10 number: ";
    cin >> input;
    cout << "The hex form of " << dec << input << " is: ";
    cout << hex << uppercase << input << "\n";

    Sleep(3000);
}