10

我发现有两种方法可以为 iostream 设置 f()/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 的格式时,它们有什么区别?

您通常在更改格式时使用哪个?

4

1 回答 1

11

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

于 2013-10-02T00:18:31.150 回答