在我的代码中的不同位置,我设置了某些流属性,例如在std::cout << fixed << 4.56342;
中,以便操作integer
或double
在打印到标准输出时的显示方式。有时在特定的运行时流程中,std::cout
使用而不进行任何操作,但由于前面的操作,输出会被无意中转换。
那么,重置std::cout
的所有此类属性的最佳方法是什么,以便调用std::cout<<
的行为与下面的示例完全相同:
#include <iostream>
int main(int argc, char **argv) {
// let X be an integer or a double
std::cout << X;
return 0;
}
我看到Effective use of C++ iomanip library,一般不直接使用操纵器是有道理的。这将是一个很好的战略。尽管如此,知道如何撤消所有这些操作会很好,如上所述。
答案 0 :(得分:2)
使用resetiosflags
:
std::cout << std::resetiosflags( std::ios_base::basefield ); // clears integer manipulations std::cout << std::resetiosflags( std::ios_base::floatfield ); // clears floating-point manipulations std::cout << std::resetiosflags( std::cout.flags() ); // clears all flags