首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iomanip /固定宽度持久性

iomanip /固定宽度持久性
EN

Stack Overflow用户
提问于 2017-09-07 10:31:41
回答 1查看 1.1K关注 0票数 1

为什么

代码语言:javascript
复制
#include <iostream>
#include <iomanip>

int main()
{
    std::cout << std::fixed << std::setw(4) << std::setprecision(0);
    std::cout << 4;
    std::cout << 4;
}

打印

代码语言:javascript
复制
"   44

(忽略引号,这只是为了使格式正确),而不是

代码语言:javascript
复制
"   4   4

我认为iostream‘修饰符’在流上持久化,直到显式更改/重置为止。我有一堆数字,我需要打印一个特定的前缀,以便所有字段都有相同的宽度;我是否应该在每次打印一个修饰符时重新应用我的修饰符?看起来不太有效率。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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:是的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46094125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档