在我的程序中,会有两行输出:第一行的数字是小于1000的整数;第二行中的数字是 0 到 10 之间的 float 。我想要的输出格式如下:
这是我尝试的方式(所有输出都是最后四行): case 1 - 5
- 无格式输出;在图片中我们可以看到应该打印的数字
- 第 1 行没有格式,第 2 行有格式 第 1 行的数字;只有第一个对,大于100的数用科学计数法
- 两行格式
就像案例 2 和
<<setw(3)<<setfill('0')
好像只能用一次把 43 改成 043,然后就不行了 - 与
noshowpoint
添加。如果我打印*(p + 2)
单独,它总是打印118
有或没有格式。但是如果我打印*(p + 2)
在for
循环,输出仍然是1.2e+002
除了第一个。但是如果我打印数字118
直接输出就对了。
那么,我的代码哪一部分是错误的?以正确格式输出答案的正确方法是什么?
最佳答案
确实,并非所有 IO 格式化操纵器都是持久性。其中一些,如 std::setw
仅在下一次操作时生效,然后过期。您的代码没有任何“错误”;你只需要再次使用操纵器。请参阅您最喜欢的 C++ 标准库文档,以检查您使用的每个操纵器的持久性。
关于c++ - `cout`的格式化输出范围是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33188797/