问题标签 [iomanip]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
652 浏览

c++ - 定义一个ostream修饰符c ++

我正在生成程序集,我想让所有生成的代码对齐。这包括cout<<"\t"<<left<<setfill(' ')<< setw(8);在每条指令前面加上类似的东西。我怎样才能声明一个 ostream 修饰符,这将节省我在每一行编写所有这些代码的时间。我正在寻找类似的东西:

ostream mod="\t"<<left<<setfill(' ')<< setw(8); cout<<mod<<"addiu"<<"$sp, $sp, 24"<<endl;

我知道我可以用宏来做到这一点,但我想知道如何用 ostream 对象来做到这一点。

0 投票
2 回答
678 浏览

c++ - 如何格式化此输出 C++

我有一张地图,其中包含一个单词和一组整数作为值。我想输出单词左对齐,然后在排列的列中输出集合中的整数值。我认为这会起作用,但它的输出似乎非常糟糕。

我将如何调整它以使数字列彼此对齐并在它们之间留出相当数量的空格?

我认为这应该正确输出,但它看起来像这样:

0 投票
2 回答
1957 浏览

c++ - 为什么 std::setbase(2) 不切换到二进制输出?

上的 cppreference 页面std::setbase说:

非 8、10 或 16 的基值会将基域重置为零,这对应于十进制输出和依赖于前缀的输入。

怎么来的?

仅支持这些基础是否有特殊原因?至少支持 16 以内的任何东西(实际上是 36:0-9 然后是 az)似乎是微不足道的,而不必做出任何艰难的选择。具体来说, 2 是一个流行的基础,我认为应该有兴趣std::setbase(2)(和相应的std::binary)。

我显然可以打印我自己的位,但我的 ostream 这样做会很好。

0 投票
4 回答
2261 浏览

c++ - 如何正确使用 setprecision() 在金额末尾添加“.00”?

我显然不知道如何设置精度。此代码应打印出通过收费站的汽车的价格

然而,打印出来的是没有尾随零的“成本”。

0 投票
1 回答
409 浏览

c++ - 从文件中读取整数并将其存储在二维向量中

我在读取文件并将其保存回 2D 矢量时遇到问题。这是写入文件的函数:

这只是为每行(高度 * 宽度 * num_frames)次数写入一个随机数。像这样:

我想要做的是从文件中读回并将文件的不同块(宽度*高度)保存在不同的帧中。我试过这样做,但程序阻塞没有任何错误:

我使用了一个偏移量,每次乘以 6(字节数 * 行)开始读取,结构 Frame 只是一个 2D 向量来存储值。我必须使用偏移量来执行此操作,因为下一步将执行此多线程,每个知道帧数的线程都应该计算正确的偏移量以开始读取和存储。

0 投票
2 回答
605 浏览

c++ - 从十六进制的 istream 中读取双精度

鉴于我可以使用这样double foo的十六进制格式字符串分配它:sscanf

但我似乎无法以istringstream同样的方式行事。所有这些都只是将 0 写入foo

  1. istringstream("0XD") >> foo
  2. istringstream("0XD") >> hex >> foo
  3. istringstream("D") >> hex >> foo

当我在这里读到double istream提取操作符应该:

检查是否char允许从前面的步骤获得的输入字段中将由std::scanf给定的转换说明符解析

为什么我不能从 中读取十六进制istream?如果对测试有帮助,我在这里写了一些测试代码。

0 投票
0 回答
23 浏览

c++ - 是否每次都必须在 ostringstream 中设置 io 操纵器?

我有以下代码

在版本 1 中,我第一次设置了操纵器。但是在打印 6 时,它没有填充“x”。

在版本 2 中,我两次都设置了操纵器。但是在打印 6 时,它被填充了 'x'。

是否每次都必须设置操纵器(或)我在这里遗漏了什么?

0 投票
1 回答
344 浏览

c++ - 如何正确打印带边距的长字符串(setw())?

我的字符串是嗯,350 个字符长。我需要将它放在控制台的中心,以便它的左右边距相同。

当我尝试对此进行 setw() 时,我得到这样的输出(只有开头有边距)。

我想要达到的目标:

我的代码看起来像这样(仅适用于左侧,我什至没有尝试第二个):

如果有人知道如何实现我的目标,我将不胜感激!

0 投票
2 回答
875 浏览

c++ - 仅当 C++ 中存在小数值时格式化浮点值的输出

我需要有关如何在 C++ 中格式化输出以显示小数位(如果有)的帮助,或者如果没有要显示的小数点则显示整个整数。

我写:

它没有给我预期的输出。它不是打印 90,而是打印 90.0

0 投票
1 回答
231 浏览

c++ - 重置使用 iomanip 所做的所有更改的类:一次调用中的 setprecision、setfill 和标志

所以我知道有很多次我想重置我使用 iomanip 所做的格式更改。我创建了一个类,您可以使用它来获取 ostream 对象的格式,例如用于写入/读取文件的 std::cout 或 fstream 对象。我这样做主要是为了练习并帮助有同样问题的其他人。

您所要做的就是使用类 ResetIOmanip 创建一个对象。如果您在没有参数的情况下创建它,它将使用 std::cout 作为默认值。您可以将 ostream/istream 对象作为参数放入,它将适用于文件。确保在进行任何格式更改之前调用它。然后当它完成时从对象调用成员函数resetAll(),它将重置标志,重置精度,并重置填充字符。

请随时就如何改进我的头文件发表评论。我还在学习,一直在寻找建设性的批评。谢谢。