为什么
#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‘修饰符’在流上持久化,直到显式更改/重置为止。我有一堆数字,我需要打印一个特定的前缀,以便所有字段都有相同的宽度;我是否应该在每次打印一个修饰符时重新应用我的修饰符?看起来不太有效率。
发布于 2017-09-07 10:40:16
不幸的是,您已经进入了标准的一个领域,它有点过时,似乎没有任何总体的设计目标。
这无疑是历史性的,因为碘流图书馆AFAIAA,最初不是STL的一部分,这是什么成为标准图书馆。
值得一读关于所有std::ios_base成员和相关操纵者的注释。
例如:
base/width
一些I/O函数在返回之前调用width(0),请参见std::setw (这只会对下一个I/O函数产生影响,而不会影响后续的I/O)。 该修饰符对输入和输出的确切影响在各个I/O函数之间各不相同,并在每个operator<<和operator>>重载页面上分别描述。
预期:
但那只是!
A:是的。
https://stackoverflow.com/questions/46094125
复制相似问题