ios_base::fmtflags

取得するほうのios_base::flagsの戻り値の型は、ios_base::fmtflagsであり、これは各処理系の実装にもよるが大抵はビットマスクの列挙型である。

ios_base::fmtflags - cpprefjp C++日本語リファレンス

どこにあるか調べてみた。

/usr/includeの中
/usr/includeの中

/usr/includeの中にこれだけある。
C++ディレクトリがあるので、

c++の中の8の中
c++の中の8の中

c++の中の8の中を見る。
iosディレクトリを開くと、

bits/ios_base.hとある
bits/ios_base.hとある

bits/ios_base.hとある。

bitsの中のios_base.h
bitsの中のios_base.h

bitsの中のios_base.hがあった。

それっぽい定数列挙型があるがfmtflagsとは書いてない
それっぽい定数列挙型があるがfmtflagsとは書いてない

それっぽい定数列挙型があるがfmtflagsとは書いてない。
fmtflagsで検索すると、

コメントあった
コメントあった

コメントあった。
そしてその下に、

さきほどの列挙型にtypedefしてる
さきほどの列挙型にtypedefしてる

さきほどの列挙型に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