尾流操纵器在C++表达式中的含义

Meaning of trailing stream manipulator in C++ expression

本文关键字:表达式 C++ 操纵      更新时间:2023-10-16

每对的两个表达式有什么区别?我不明白这些表达式末尾的尾随std::dec的影响。

cin,在此之间:

int i;
std::cin >> std::hex >> i >> std::dec;

而这个:

int i;
std::cin >> std::hex >> i;

cout相同的问题,在这之间:

int i;
std::cout << std::hex << i << std::dec << std::endl;

而这个:

int i;
std::cout << std::hex << i << std::endl;

谢谢!

操纵器设置的某些标志仅在下一个输出或输入操作中处于活动状态。

其他的,

如由 std::hexstd::dec 设置的格式标志,在流对象中永久设置,并在设置标志后影响所有输出和输入操作。

因此,如果您使用std::hex则所有整数输出和该点的输入都将采用十六进制表示法。如果您只想以十六进制输出或输入单个数字,则需要"重置"为默认的十进制表示法,例如 std::dec导致诸如此类的陈述

std::cin >> std::hex >> i >> std::dec;

std::dec设置流中数字的格式以供以后使用,其方式与std::hex设置 i 的输入/输出的格式相同。