如何了解cout的默认格式

时间:2019-10-30 09:34:17

标签: c++ hex decimal ostream

我希望这不是一个幼稚的问题。类型转换是否在C ++中隐式执行?因为我已经要求用户以十六进制格式输入数字,然后在不提及其格式的情况下将其输出到屏幕上,所以它以十进制格式显示。我在这里想念什么吗?

#include <iostream>
#include <iomanip> using namespace std; 

int main() { int number = 0; 
             cout << "\nEnter a hexadecimal number: " << endl; 
              cin >> hex >> number;
            cout << "Your decimal input: " << number << endl; number; 
                }

1 个答案:

答案 0 :(得分:1)

此处在十六进制和十进制之间没有类型转换。在内部,无论是以十六进制还是十进制形式读取,您的号码都将以二进制补码(二进制表示形式)存储。从dec / hex字符串转换为整数,然后在输入/输出数字时发生相反的情况。

使用std::hex告诉流,告诉流将其默认值更改为整数I / O。没有它,默认值为十进制。因此,如果仅对std::cin执行此操作,则它将以十六进制读取数字,但是std::cout仍在输出十进制数字。如果希望它也将其底数更改为十六进制,则必须对std::cout执行相同操作:

std::cout << std::hex << "Your hexadecimal input: " << number << std::endl;