0

在我的代码中的不同位置,我设置了某些流属性,例如 in std::cout << fixed << 4.56342;,以便在打印到标准输出时操纵integeror的显示方式。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;
}

我看到了有效使用 C++ iomanip 库,通常不直接使用操纵器是有意义的。这将是一个很好的战略。尽管如此,很高兴知道如何撤消我上面描述的所有此类操作。

4

1 回答 1

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
于 2013-08-22T02:17:06.953 回答