gpt4 book ai didi

c++ - iomanip/固定宽度持久性

转载 作者:行者123 更新时间:2023-11-27 23:51:25 24 4
gpt4 key购买 nike

为什么

#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

Some I/O functions call width(0) before returning, see std::setw (this results in this field having effect on the next I/O function only, and not on any subsequent I/O)

The exact effects this modifier has on the input and output vary between the individual I/O functions and are described at each operator<< and operator>> overload page individually.

预期:

But that's just <insert expletive>!!!

答:是的。

关于c++ - iomanip/固定宽度持久性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46094125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com