【问题标题】:how to understand the default format of cout如何理解cout的默认格式
【发布时间】:2020-02-25 13:44:30
【问题描述】:

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

【问题讨论】:

  • 默认情况下,使用 iostreams 以 10 为基数打印数字,是的,就像在默认情况下读取时它们应该以 10 为基数一样。
  • 数字的文本表示具有格式。数字没有。

标签: c++ hex decimal ostream


【解决方案1】:

这里没有十六进制和十进制之间的类型转换。无论您的号码是作为十六进制数还是十进制数读入,您的号码在内部都将以二进制互补(二进制表示)形式存储。从十进制/十六进制字符串转换为整数,反之则发生在输入/输出数字时。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多