c++ - `cout`的格式化输出范围是多少

标签 c++

在我的程序中,会有两行输出:第一行的数字是小于1000的整数;第二行中的数字是 0 到 10 之间的 float 。我想要的输出格式如下:

right format

这是我尝试的方式(所有输出都是最后四行): case 1 - 5

  1. 无格式输出;在图片中我们可以看到应该打印的数字
  2. 第 1 行没有格式,第 2 行有格式 第 1 行的数字;只有第一个对,大于100的数用科学计数法
  3. 两行格式 就像案例 2 和 <<setw(3)<<setfill('0')好像只能用一次把 43 改成 043,然后就不行了
  4. noshowpoint添加。如果我打印 *(p + 2)单独,它总是打印 118有或没有格式。但是如果我打印 *(p + 2)for循环,输出仍然是1.2e+002除了第一个。但是如果我打印数字 118直接输出就对了。

那么,我的代码哪一部分是错误的?以正确格式输出答案的正确方法是什么?

最佳答案

确实,并非所有 IO 格式化操纵器都是持久性。其中一些,如 std::setw 仅在下一次操作时生效,然后过期。您的代码没有任何“错误”;你只需要再次使用操纵器。请参阅您最喜欢的 C++ 标准库文档,以检查您使用的每个操纵器的持久性。

关于c++ - `cout`的格式化输出范围是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33188797/

相关文章:

c++ - 运算符==重载不比较

c# - 将结构数组从 C#(.NET Core) 传递到 C++(unamnaged)

c++ - 对于 boost io_service,是否只有一个线程在 epoll_wait 上阻塞?

c++ - 包含在 main 方法中抛出错误的类对象的 vector

c++ - 无法将正确的 lambda 传递给 emscripten_set_main_loop

c++ - 使用 7Zlib 命令行将文件解压到目录中

c++ - 根据入参值调用不同的基类构造函数

c++ - 检测地址(主机)是否解析为本地计算机

c++ - 即使 QCloseEvent 被忽略,窗口也被隐藏

c++ - (*it)->method() 与 (**it).method