unsetf/setf的问题?
- C/C++ code
#include <iostream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){ int i = 10; cout << i << endl; // 输出10 cout.setf( ios_base::hex, ios_base::dec ); cout << i << endl; // 问题一:为什么输出10,而不是a呢? cout.unsetf( ios_base::dec ); cout.setf( ios_base::hex ); cout << i << endl; // 输出a cout.setf( ios_base::dec ); cout << i << endl; // 输出10 cout.setf( ios_base::hex, ios_base::dec ); cout << i << endl; // 输出a return 0;}
[解决办法]
- C/C++ code
fmtflags setf(fmtflags fmtfl){ fmtflags old = m_flags; m_flags |= fmtfl; return old;}fmtflags setf(fmtflags fmtfl, fmtflags mask){ fmtflags old = m_flags; m_flags &= ~mask; m_flags |= (fmtfl & mask); return old;}