std::stream 的格式可以通过 setw(), setfill() 等方式修改,但修改过后的所有操作都将按照新的格式进行操作,如何要恢复成先前的格式,该怎么做呢?
我们可以在修改format之前先保存ostream的flags,然后再用它来恢复。下面是一个简单的例子:
#include <iostream> using namespace std;
int main(int argc, char* argv[]) { ios::fmtflags f(cout.flags()); // save old format cout << 16 << endl; cout << std::hex << 16 << endl; cout << 10 << endl; // format not restored, so print "a" in hex cout.flags(f); cout << 10 << endl; // format restored, print "10" in dec }
输出为:
16 10 a 10