问题标签 [ostream]

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 回答
1318 浏览

c++ - 使用 cout (C++) 打印未初始化的布尔值

我有一个带有bool未由构造函数初始化的数据成员的类。如果我做

没有初始化x的此类的对象在哪里,我有时会得到一个随机数而不是 0 或 1。(我正在使用。)这种行为是否符合?boolgccStandard

0 投票
4 回答
4325 浏览

c++ - C++ - 将 std::ostream 传递给函数

我想到了 C++ 中的一个小型调试内联函数:

这是我想如何使用它的一个例子:

但是它不能按我计划的方式工作 - 我希望它仅在详细级别高于或等于传递给函数的调试级别时打印消息,但似乎它每次都会打印,无论调试级别如何,所以数据会保留在 cout 缓冲区中。到目前为止,我认为这个函数不是我最近想到的最好的主意,但我仍然想知道是否有办法清除与 cout、cerr 等相关的缓冲区。是否有可能让这种函数正常工作?

0 投票
2 回答
2850 浏览

java - 使用 JNI 通过 std::ostream 从 C++ 获取文本数据到 Java

我在 C++ 中有一个类,它以 astd::ostream作为参数以连续输出文本(跟踪信息)。我需要尽可能高效地将此文本传递到 Java 端。最好的方法是什么?我正在考虑使用直接缓冲区,但另一种方法是将所有函数调用传递到 Java 并在那里进行所有处理,但似乎我需要很多 JNI 调用。

如果可以显示一个确切实现方法的示例,那将非常有帮助,或者如果已经存在一些代码来执行此操作(可能是另一个项目的一部分)。另一个帮助是将其直接连接到标准 Java 流结构,这样整个实现对开发人员来说是完全透明的。

(编辑:我发现通过 JNI 接口共享输出流,这似乎是重复的,但并没有太大帮助——他似乎没有找到他正在寻找的答案)

0 投票
2 回答
6473 浏览

c++ - 重载 << 运算符和递归

我尝试了以下代码:

当我编译并运行它时,它符合预期;一个无限循环。如果我删除cout朋友函数中的语句,则不会发生递归。为什么会这样?

0 投票
4 回答
2427 浏览

c++ - 派生streambuf 或basic_ostringstream?

我想派生一个字符串流,以便我可以使用 operator<< 构造一条消息,然后将其抛出。API 看起来像:

这应该做一个

所以我所做的是创建一个errorbuf(继承自streambuf),它重载'overflow'方法,然后创建一个ostream(&errorbuf)。我想知道我是否不应该从 basic_ostringstream 或其他东西继承...

0 投票
2 回答
7992 浏览

c++ - 设置 std::ostream 精度的最小小数位数

有没有办法设置 std::ostream 将输出的“最小”小数位数?

例如,假设我有两个要打印的未知双变量(为了便于说明,此处添加的值):

我可以设置我的最大小数精度,以便b准确输出

有没有办法设置“最小”精度(最小小数位数),同时保持“最大”精度,以便

产量

不是

?

谢谢!菲尔


对此的简短回答是“不”。流只有一种精度设置,无法区分最大和最小精度。感谢大家的慷慨建议!

0 投票
5 回答
1032 浏览

c++ - int c=0 的结果;cout<

我认为它应该是 01 但有人说它“未定义”,有什么理由吗?


我认为它应该是 01 但有人说它“未定义”,有什么理由吗?


c++既是增量也是赋值。何时发生赋值(在该行上的其他代码之前或之后)由编译器自行决定。它可以在之后cout <<或之前发生。

这可以在 C99 标准 http://www.open-std.org/JTC1/SC22/wg14/www/docs/n1124.pdf中找到

您可以在 pdf 的第 28 页或第 5.1.2.3 节中找到它

p 的实际增量可以发生在前一个序列点和下一个序列点之间的任何时间

由于有人要求 C++ 标准(因为这是一个 C++ 问题),它可以在第 1.9.15 页第 10 页(或 pdf 格式的第 24 页)中找到

单个运算符的操作数和单个表达式的子表达式的计算是无序的

它还包括以下代码块:

我觉得C99标准的解释更清楚,但在两种语言中都是如此。

0 投票
3 回答
1456 浏览

c++ - 如何从 wostream 转换为 ostream

我正在使用一个接收 ostream 的函数,但我有 wostream 有没有办法将一个转换为另一个?

特别是我想使用 boost::write_graphviz ,它采用 ostream 但我目前在 << wostream 的运算符中。

0 投票
4 回答
489 浏览

c++ - 需要为 C++ ostream 插入运算符提供上下文

对于我正在开发的 API,我希望允许用户将自定义对象插入到ostream. (想想内存有限的嵌入式系统中的数千万个 16 位/32 位/48 位对象。)

假设用户初始化底层上下文,并查找以下对象之一:

在一个完全不同的范围内,可能嵌套在远离用户显式代码的地方,我们可能需要将对象插入到一个不可用ostream的对象中。ddb

tw 封装的实际值是97,594,974,但期望的输出是这样的:

为了使其工作,适当的插入运算符需要访问ddb,但它不能依赖静态或全局变量或函数(出于多线程原因)。我想做是允许用户请求和使用这样的流包装器:

返回的 ostream 子类将包括对 ddb 的引用,供需要它的特殊流插入器使用,以及对原始流的引用——std::cout在这种情况下——它将转发其所有输出。

不幸的是,我提出的继承或组合方案编写起来很混乱(不是一个大问题),并且可能给用户带来问题(一个更大的问题)。关于如何优雅地使 ddb 可用于插入操作员的任何建议?我对 boost.Iostreams 知之甚少,但不确定它是否会对我有所帮助。

0 投票
2 回答
1447 浏览

c++ - 将 Unicode 字符写入 OStream

我正在使用 unicode/宽字符,并且正在尝试创建一个 toString 方法(Java ::toString equiv)。ostream 是否会处理宽字符,如果是这样,有没有办法警告流的消费者它是 unicode 出来的?