用于流格式化的ios和ios_base类

时间:2013-10-02 00:13:52

标签: c++ iostream

我发现有两种方法可以为iostream设置setf()/ unsetf(),也就是说 (1)ios和(2)ios_base。

#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的格式时,它们的区别是什么;

您在更改格式时通常使用哪种方法?

1 个答案:

答案 0 :(得分:8)

常量实际上是在std::ios_base中定义的,但std::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,并定义输入和输出流之间通用的所有成员。