问题标签 [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 投票
4 回答
1174 浏览

c++ - 将 C 格式字符串转换为 C++ io 操作符

在 C 语言中,我使用 printf("%+10.5d\n", x); 打印整数 x。

我为 C++ io 操纵器编写了一个小测试用例,但输出格式不同:

输出是:

我在这里缺少哪个 io 操纵器来获得与 printf 相同的输出?

0 投票
2 回答
1273 浏览

c++ - 如何为所有 C++ IOStream 操作符通用定义插入操作符?

全部,

为什么以下代码无法为“std::endl”编译,但对于所有其他插入的类型都可以?

我收到以下 G++ 4.5 错误:

willo:~/test_cpp$ g++ -Wall test_overloaded_insertion_manipulators.cpp test_overloaded_insertion_manipulators.cpp: In function 'int main(int, char**)': test_overloaded_insertion_manipulators.cpp:60: error: no match for 'operator<<' in 'my_stream < <std::endl'</p>

我希望代码为 std::endl 实例化一个 'operator<<',就像它为原语 std::ios_base 和我的自定义操纵器所做的那样。

对于上下文,我正在尝试创建一个与当前 IOStream 操纵器以及一两个更多自定义操纵器一起使用的轻型 API IOStream 类。

0 投票
1 回答
199 浏览

c++ - 如何将我们自己的函数声明放入 c++ 中的 iostream 库中?

我想将此声明放入 iostream 库中。我该怎么做?

0 投票
2 回答
1072 浏览

graphics - 在 Mathematica 中使用 Locator 和 Manipulate 设置步长

鉴于此 Mathematica 代码,

如何在定位器上设置步距?如果可能的话,约束他们?

0 投票
2 回答
3153 浏览

c++ - 带参数的流操纵器如何工作?

在 Stroustrup 的 C++ 书中,有一个自定义操纵器采用参数的示例(请参阅附件代码)。我对如何创建结构感到困惑。特别是,“smanip”的构造函数看起来有两个 int 参数,一个用于函数指针“ff”,一个用于“ii”。我不明白如何传递 int 参数以使用以下方法创建结构:

此外,这些函数的调用顺序是什么,类型参数 Ch 和 Tr 是如何确定的?非常感谢。

0 投票
1 回答
9822 浏览

c++ - noskipws对cin的影响>>

据我了解,提取运算符会在开头跳过空格,并在遇到空格或流结尾时停止。noskipws 可用于停止忽略前导空格。

我有以下使用 noskipws 的程序。

我的查询是:

  1. 如果我输入“John”作为第一个输入,那么第二个 cin>> 操作不会等待输入并且不会将任何内容复制到目标,即名称数组。我希望第二个 cin>> 至少传输一个换行符或流的结尾,而不是仅仅将目标字符串设置为空。为什么会这样?

  2. 当我输入“John Smith”作为第一个 cin>> 语句的输入时,也会观察到同样的情况。为什么第二个 cin>> 语句不将空格或“Smith”复制到目标变量?

以下是程序的输出:

谢谢!!!

0 投票
3 回答
2041 浏览

c++ - std::function 作为自定义流操纵器

我正在尝试使用 C++11 功能使自定义流操纵器更易于创建。我可以将 lambda 函数用作操纵器,但不能使用std::function<ostream&(ostream&)>.

这是代码,归结为:

第二条cout语句失败并显示以下内容:

为什么会失败?我正在使用 cygwin gcc 4.5.3。

虽然我在问,但std::function由于效率问题,我并不热衷于在任何地方使用。但我确实希望编写返回 lambda 函数的函数,并且不知道如何在没有std::function. 例如,像下面这样的东西会很棒

...但显然不起作用。是否有另一种有效的语法?我无法想象它会是什么,所以我可能会被困住std::function

如果我对第二个问题有解决方案,那么第一个问题将毫无意义。


谢谢你。

定义operator<<(ostream&, std::function<ostream&(ostream&)>帮助。我误读了一个网页,并认为ostream它足够聪明,可以将任意对象operator()视为操纵器。我错了。此外,lambda正如我被告知的那样,我构建的简单函数可能只是被编译成一个普通的旧函数。事实上,如果我使用变量捕获来确保它lambda不是一个简单的函数,那么编译器就会失败。此外,operator()已定义的对象(默认情况下)不被视为操纵器:


进一步更新:事实证明,比以下解决方案更强大的解决方案可以通过以下方式完成:

此代码有一个额外的const. 我发现这试图在我的项目中实际实施解决方案。

0 投票
2 回答
616 浏览

c++ - std::ws 是否应该在文件末尾引发故障位?

使用 std::ws 操纵器从流中提取是否应该提高失败位?在以下代码中,Clang 编译的(在 Xcode 4.5.1 中)程序无法通过最终断言。显然s >> std::ws在 EOF 会导致失败。然而 GCC 4.7.2 通过了这个断言。哪个是对的?

0 投票
1 回答
1343 浏览

c++ - 用户定义的参数化操纵器

我正在使用 gcc 4.2.4。根据 Schildt,“C++ The Complete Reference”,1995 年,用户定义的参数化操纵器应定义为:

我相信 imanip(mymanip, param) 应该返回一个包含 mymanip 和 mymanip 参数的对象。这应该由重载的运算符使用>> 来调用 mymanip。但是,这不起作用,没有声明 imanip。

我还找到了这个版本:

这也不起作用。

我的问题是:

  1. gcc 4.2.4 在这个细节上是否遵循 ANSI C++ 标准?如果有,自 1995 年以来标准是否在这方面发生了变化?
  2. 为了定义我自己的参数化操纵器,我是否需要了解 iostream 代码并编写我自己的重载 imanip 和 operator>> 函数?
  3. 无论问题 2 的答案如何,我理解 iostream 代码的最佳策略是什么?我应该阅读代码吗?如何找出属于 iostream 的已编译库的名称?我应该读一本书吗?
0 投票
2 回答
2116 浏览

c++ - 重载后 std::endl 的 'operator<<' 不匹配

很抱歉我重复了这个问题,但我没有在那里发表评论所需的声誉,而且那里的答案对我来说没有说服力。

我在这里得到:

's.my_ostream::operator<<(((const std::string&)((const std::string*)(& str))) 中的 'operator<<' 不匹配) << std::endl' </p>

我不明白为什么。如果它适用于 ostream,它应该适用于 my_ostream。该程序有效:

它输出:

如此简单的重载并不能解释这个错误。另外,我这里不介绍模板,所以未确定的模板类型参数应该不会起作用。阅读 iostream 代码被证明是非常困难的,所以我很感激任何见解。