iomanip /固定宽度持久性

iomanip / fixed width persistence

本文关键字:持久性 固定宽度 iomanip      更新时间:2023-10-16

为什么

#include <iostream>
#include <iomanip>
int main()
{
    std::cout << std::fixed << std::setw(4) << std::setprecision(0);
    std::cout << 4;
    std::cout << 4;
}

打印

"   44

(忽略报价,它只是为了使格式正确)而不是

"   4   4

我认为iostream"修饰符"在流上持续存在,直到它们被明确更改/重置为止。我有很多数字需要在某个前缀上打印,以便所有字段的宽度相等。每次打印时,我都应该重新应用我的修饰符吗?似乎不是很有效。

不幸的是,您已经徘徊在标准的一个领域之一,似乎没有任何总体设计目标。

这无疑是历史性的,因为iostreams图书馆afaiaa最初不是STL的一部分,这是成为标准图书馆的原因。

值得阅读有关所有std::ios_base成员和相关操纵器的注释。

例如:

http://en.cppreference.com/w/cpp/io/ios_base/width

返回之前的某些I/O函数调用宽度(0),请参见std :: setW(此字段中仅对下一个I/O函数产生影响,而不是随后的任何后续I/O)

该修饰符对单个I/O函数之间的输入和输出的确切效果,并在每个操作员上进行描述&lt;&lt;和操作员&gt;&gt;分别超载页面。

预期:

但这只是&lt; insert expretive&gt; !!!

a:yup。