问题标签 [manipulators]

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 投票
3 回答
5429 浏览

c++ - 用 C++ 演示 noskipws

我在 C++ 中尝试 noskipws 操纵器,并编写了以下代码。

我期望以下输出:

预期产出

输出

我修改了这段代码以使其适用于这样的字符,并且效果很好。

我知道 cin 是如何工作的,但我无法弄清楚为什么在string.

0 投票
1 回答
97 浏览

c++ - 为什么 C++ 流操作符没有调用操作符?

我想知道:如果 examplestd::endl是一个常规函数,那么为什么它缺少调用运算符(the operator())?

我知道它被设计为与插入(<<)和提取(>>)运算符一起使用。我试着这样称呼它:

但这当然没有用。

0 投票
2 回答
857 浏览

c++ - 如何实现自动添加分隔符的自定义粘性操纵器?

Python 中的 print 函数使用可自定义的分隔符自动分隔其参数。有没有办法通过使用流操纵器在 C++ 中模拟这种行为?

即以下 C++ 代码:

应该类似于以下 Python 代码:

所需的输出将是:

我将如何实施custom::sep?它似乎比您的标准自定义操纵器更棘手,因为它不能只更改流中的下一个项目,例如herehere。它应该是粘性的,直到下一个custom::sepstd::endl。此外,它不能只对数字或某些类型起作用,比如这里。它应该适用于任何可流式传输的类型。

0 投票
1 回答
1272 浏览

c++ - 如何将 std::endl 传递给函数并使用它?

我想弄清楚如何将操纵器传递std::endl给函数,然后在函数中使用传入的操纵器。我可以这样声明函数:

我可以这样称呼它:

没关系。我的问题是弄清楚如何使用里面的机械手f。这不起作用:

无论编译器如何,错误消息归结为编译器无法确定operator<<调用哪个。我需要在内部修复什么f才能编译我的代码?

0 投票
3 回答
459 浏览

c++ - C++ 中的流操纵器如何成为函数?

在 C++ 中调用函数时,会在后面写上函数名,()以将其区分为函数调用。为什么我不能以相同的方式调用流操纵器函数

为什么不允许这样做?:

不是endl变量持有\n吗?

谢谢!

0 投票
1 回答
812 浏览

c++ - iostream 操纵器通过 xalloc/iword 还是通过派生类?

我需要实现一个 C++ iostream 操纵器。在这里和那里阅读似乎人们使用两种方式

  1. 使用ios_base::xallocios_base::iword

  2. 从 iostream 实现派生类,如下例所示。

我喜欢第二种方式,但与第一种方式相比,它可能有我看不到或无法理解的缺点。

我在C++ iostream 的自定义操纵器这篇文章中找到了方法 #2 的一个非常好的实现。

在我看来,它xalloc and iword更习惯于为我的自定义流存储一些自定义内部状态,以便在某个时候使用。

0 投票
1 回答
777 浏览

c++ - 自定义流操纵器

我有一个CFileManagerOStream继承自的自定义流std::ostream,它从网络流类中获取 Unicode UTF16 或 UTF32 字符串,CTcpStream并将它们作为 UTF8 字符串存储在磁盘上。这些字符串可能太大(可能是多个 TB),无法在内存中转换为 UTF8,所以我认为我需要为这项工作实现一个 C++ 流操纵器。我发现的所有操纵器示例都采用整个字符串并对其进行处理,由于内存要求低,在我的情况下不会这样做。我已经准备好所有 Unicode 转换代码,我要解决的问题是使用尽可能少的内部存储器进行转换。

我希望像这样使用机械手;

这是可能的还是我错误地接近这个?

0 投票
2 回答
1938 浏览

c++ - C++缩进输出类继承ofstream

所以我想写一个可以像这样使用的缩进输出类:

这将输出:

所以 IndS 会打印出当前缩进并增加缩进,Ind 会打印出当前缩进,而 IndE 会减少缩进并打印出当前缩进。我试图像这样创建它:

所以我认为这有几个问题:

  1. 它不编译。no match for 'operator<<' (operand types are 'std::ofstream {aka std::basic_ofstream<char>}' and '<unresolved overloaded function type>') ofs << Ind; candidates are:诸如此类的错误

  2. 我不会覆盖所有构造函数。有没有办法做到这一点?我想我只需要重写所有的构造函数IndentText = " ";并委托重载的构造函数

有人可以帮我解决这个问题吗?谢谢!

0 投票
1 回答
668 浏览

c++ - 处理 iostream 操纵器和 ANSI 控制台颜色代码

我正在使用 ANSI 颜色代码在 Unix 控制台中格式化我的输出。

但是,当使用std::setw或等操纵器std::left时,结果会受到颜色代码的影响,因为它是一堆字符。

我应该如何处理这个问题?有没有办法让流操纵器忽略颜色代码?

0 投票
1 回答
70 浏览

c++ - 是否存在不涉及 i/o 流的 mingw 库本地字符串操作的方法

我正在尝试构建某种格式的序列号。该号码将被输入数据库。在这一点上,我不得不使用 sprintf,但我想要一个原生的 C++ 方法。

这是示例代码:

整数将是 1 到 3 位之间的任意位置。格式需要如下所示:

001, ... 013, ... 101, ... 等等。

“序列号”的格式为:

AAAAA001, ... AAAA013, ... AAAA101 等

所以问题是,有没有一种方法可以做到这一点,它是 C++ 原生的,而不必使用 iostream 操纵器,并且包含在 mingw-w64 库中。或者它是否需要诸如 boost 库之类的东西?

另一种说法:在 C++ 中是否有 C sprintf 函数的替代品?

根据评论编辑:

所以没有什么比......

我意识到这不起作用,但无论如何它给出了想法。有没有办法用服务于sprintf功能的方法直接对字符串类对象进行操作?