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

时间:2016-03-17 10:09:04

标签: c++ iostream manipulators

每对的两个表达有什么区别? 我不理解这些表达式结尾处跟踪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;

谢谢!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

因此,如果您使用std::hex,则该点的所有整数输出和输入都将采用十六进制表示法。如果您只想输出或输入十六进制的单个数字,那么您需要&#34;重置&#34;使用例如默认的十进制表示法std::dec导致语句如

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