Namespaces
Variants

std:: dec, std:: hex, std:: oct

From cppreference.net
< cpp ‎ | io ‎ | manip
Input/output manipulators
Floating-point formatting
Integer formatting
dec hex oct
Boolean formatting
Field width and fill control
Other formatting
Whitespace processing
Output flushing
Status flags manipulation
Time and money I/O
(C++11)
(C++11)
(C++11)
(C++11)
Quoted manipulator
(C++14)
定义于头文件 <ios>
(1)
(2)
(3)

修改整数输入/输出的默认数值进制。

1) 设置流 str basefield dec ,如同调用 str. setf ( std:: ios_base :: dec , std:: ios_base :: basefield )
2) 将流 str basefield 设置为 hex ,如同调用 str. setf ( std:: ios_base :: hex , std:: ios_base :: basefield )
3) 将流 str basefield 设置为 oct ,如同调用 str. setf ( std:: ios_base :: oct , std:: ios_base :: basefield )

这是一个I/O操纵器。它可以像 out << std :: hex 这样被调用,其中 out std::basic_ostream 类型的任何输出流;或者像 in >> std :: hex 这样被调用,其中 in std::basic_istream 类型的任何输入流。

目录

参数

str - I/O 流的引用

返回值

str (指向经过操作后的流的引用)。

示例

#include <bitset>
#include <iostream>
#include <sstream>
int main()
{
    std::cout << "数字42的八进制表示:   " << std::oct << 42 << '\n'
              << "数字42的十进制表示: " << std::dec << 42 << '\n'
              << "数字42的十六进制表示:     " << std::hex << 42 << '\n';
    int n;
    std::istringstream("2A") >> std::hex >> n;
    std::cout << std::dec << "将\"2A\"解析为十六进制得到 " << n << '\n';
    // 输出进制设置会保持生效直到被更改
    std::cout << std::hex << "42的十六进制表示为 " << 42
        << " 而21的十六进制表示为 " << 21 << '\n';
    // 注意:没有I/O操纵符可以直接设置流以二进制格式输出数字(例如bin)
    // 如需二进制输出,可使用std::bitset技巧:
    std::cout << "数字42的二进制表示:  " << std::bitset<8>{42} << '\n';
}

输出:

数字42的八进制表示:   52
数字42的十进制表示: 42
数字42的十六进制表示:     2a
将"2A"解析为十六进制得到 42
42的十六进制表示为 2a 而21的十六进制表示为 15
数字42的二进制表示:  00101010

参见

修改用于整数输入/输出的进制基数
(函数)
控制是否使用前缀指示数值进制
(函数)