10

iostream の setf()/unsetf() には、(1) ios と (2) ios_base の 2 つの方法があることがわかりました。

#include <iostream>
using namespace std;

int main() {
    cout.width(5);
    cout << 123 << endl;

    cout.setf(ios::adjustfield); // (1) using ios::
    cout << 123 << endl;

    cout.width(5);
    cout << 456 << endl;

    cout.setf(ios_base::adjustfield); // (2) using ios_base::
    cout << 456 << endl;

    return 0;
}

ostream の形式を変更したい場合、それらの違いは何ですか。

フォーマットを変更する際、通常はどれを使用しますか?

4

1 に答える 1

11

定数は実際には で定義されていますstd::ios_basestd::ios(実際にはstd::basic_ios<cT, Traits>) は から派生していstd::ios_baseます。したがって、 で定義されたすべてのメンバーは、std::ios_baseを使用してアクセスできますstd::ios

クラスstd::ios_baseには、ストリームのテンプレート パラメータから完全に独立したすべてのメンバーが含まれます。入力ストリームと出力ストリームの間で共通のすべてのメンバーstd::basic_ios<cT, Traits>から派生し、定義します。std::ios_base

于 2013-10-02T00:18:31.150 に答える