如何理解cout的默认格式

how to understand the default format of cout

本文关键字:默认 格式 cout 何理解      更新时间:2023-10-16

我希望这不是一个天真的问题。类型转换是在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; 
}

这里没有十六进制和十进制之间的类型转换。在内部,您的数字将存储在2的互补(二进制表示(中,无论它是以十六进制还是十进制读取的。当输入/输出数字时,会发生从dec/xex字符串转换为整数和其他方式的转换。

使用std::hex,您告诉流您告诉流更改其整数I/O的默认数字基数。如果没有它,默认值为十进制。所以,如果你只对std::cin这样做,那么它以十六进制读取数字,但std::cout仍然输出十进制数字。如果您希望它也将其基数更改为十六进制,则必须对std::cout:执行相同操作

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