c++ - 使用 C++ hex 和 cin

如果您有以下代码:

cout << hex << 10;

输出为“a”,表示十进制 10 转换为其十六进制值。

但是,在下面的代码中...
int n;
cin >> hex >> n;
cout << n << endl;

当输入为12时,输出变为18。谁能解释一下转换的细节?它是如何变成十进制值的?

我对它变成 int 的点感兴趣。如果分解,它将是:
(( cin >> hex ) >> n);

这样对吗?

最佳答案

十六进制操纵器仅控制读取值的方式 - 它始终使用相同的内部二进制表示进行存储。变量无法“记住”它是以十六进制输入的。