今天需要输出一个双精度型数组到文件上,输出以后发现C++(MPIC++ on 64bit LinuxMint with MPICH2)默认的流输出精度为6,记忆中貌似有这么一回事,需要在流操作符<< 之间增加诸如setprecision()一类的描述。多年不用忘却了,是google了一下,发现貌似这里还有一个C++黑暗的小角落。
困扰我的是,流输出时是不是要每一个输出变量前都要增加一个setprecision(),于是google着就浮现了一个问题,就是Which manipulator of <iomanip> is sticky?也就是哪些设定是仅需要一次就会一直影响流输出的设定。发现,除了setw()之外,貌似所有其他的manipulator都是仅设定一次即可的,也就是sticky特性。
貌似我在C++ reference上没有看到这样的描述,甚至大多数示例都是仅作了一次流输出,完全看不出来这些manipulator是需要每次都设定还是仅需设定一次。
参考文献:
http://stackoverflow.com/questions/14006412/setprecision-without-iomanip
http://stackoverflow.com/questions/5905467/whats-the-deal-with-setw
http://stackoverflow.com/questions/1532640/which-iomanip-manipulators-are-sticky