C++ 表达式中尾随流操纵符的含义

Meaning of trailing stream manipulator in C++ expression

每对的两个表达式有什么区别? 我不明白这些表达式末尾的 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::dec 设置流中数字的格式供以后使用,与 std::hex 设置 i.in-/output 的格式相同。

一些由操纵器设置的标志仅对下一次输出或输入操作有效。

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

因此,如果您使用 std::hex,那么从该点开始的所有整数输出和输入都将采用十六进制表示法。如果您只想输出或输入十六进制的单个数字,那么您需要 "reset" 使用例如默认的十进制表示法std::dec 导致像

这样的陈述
std::cin >> std::hex >> i >> std::dec;