取得するほうのios_base::flagsの戻り値の型は、ios_base::fmtflagsであり、これは各処理系の実装にもよるが大抵はビットマスクの列挙型である。
ios_base::fmtflags - cpprefjp C++日本語リファレンス
どこにあるか調べてみた。
/usr/includeの中にこれだけある。
C++のディレクトリがあるので、
bits/ios_base.hとある。
bitsの中のios_base.hがあった。
それっぽい定数列挙型があるがfmtflagsとは書いてない。
fmtflagsで検索すると、
コメントあった。
そしてその下に、
さきほどの列挙型にtypedefしてる。
というわけでやっぱりこれが正体。
以前、std::coutのflagsを取得したが、なんのフラグを持っているか確認してみる。
値を出すだけでもいいけど、AND演算で含まれているか確認。
$ vi ios_base.cpp $ g++ ios_base.cpp -o ios_base $ ./ios_base ff = 4098 dec = 2 std::ios_base::dec is Exists. skipws = 4096 std::ios_base::skipws is Exists. $
4098 = 2 + 4096で、decは2、skipwsは4096、ということでこの2つ。
10進数で出力、空白は読み飛ばすというフラグ。
Sample/cpp/ios_base/fmtflags/src/ios_base at master · bg1bgst333/Sample · GitHub