我发现有两种方法可以为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的格式时,它们的区别是什么;
您在更改格式时通常使用哪种方法?
答案 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
,并定义输入和输出流之间通用的所有成员。