问题标签 [ostringstream]

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 投票
1 回答
176 浏览

c++ - 为自定义流类设置 std::io_base 标志

我有一个名为 Stream 的自定义类

这是我实际拥有的一个非常基本的例子。我正在尝试设置 std::ios_base 标志,如下所示:

使用运算符;

据我了解,因为 std::hex 返回 std::ios_base 所以它应该调用它并设置流的标志。但它总是调用模板。注意:如果我删除此模板,一切都会像您期望的那样工作,但有没有办法两者兼得?

如果您需要更多说明,请随时进一步询问

0 投票
1 回答
1368 浏览

c++ - Copy contructor error with no obvious copy

I'm attempting to build a bit of simple logging functionality from scratch, with a stream like '<<' interface, and am running into a bit of compiler issue. Here is the basics of my code:

The errors I'm getting are:

From what I've been able to find so far, the errors are because you can't call the copy constructor on ostringstream. As far as I can tell though, I'm not calling a copy constructor directly, and I'm not copying Buffer, only constructing it in the 'return' statement.

The other interesting thing is that this code compiles fine under Visual Studio 2010 where I knocked it up before integrating it into my application (which is compiled using GCC 4.6.3).

Have I interpreted the issue correctly, and if so - where is the implicit copy, and how do eliminate it?

0 投票
1 回答
149 浏览

c++ - ostringstream::write 方法修改输入参数

考虑以下片段,它获取一些二进制数据并将其写入ostringstream对象:

问题是,两个打印的哈希值彼此不同,这意味着payload已经改变。stream我尝试使用二进制模式打开std::ostringstream stream(std::ios::out | std::ios::binary)打开,它没有任何区别,我没想到它会,无论如何。

另一个事实是,每次我重新运行程序时,我都会从第二个打印语句中得到不同的校验和。第一个哈希总是相同的。

现在,如何将二进制数据正确写入 ostringstream?问题可以转换为const char*GetData方法将 anunsigned char**作为第一个参数)吗?

更新:根据评论,这里有更多解释:

  • 比较原始数据和写入数据的二进制差异,我看到写入的数据在某些地方向右移动(24 字节)。它在开始时还添加了一些字节。我仍然认为这与演员阵容有关。
  • GetData和实际编写之间没有更多的代码。
  • GetData 工作正常,因为调用它后的校验和是正确的(我知道校验和应该是什么)。
  • 我无法发布可编译的代码,因为GetData. 而且没有必要,我已将问题隔离到write被调用的行。
  • 系统详细信息为: Ubuntu 12.04 64bit 上的 gcc 版本 4.6.3
0 投票
1 回答
456 浏览

c++ - ostringstream 打破常规?

我想将 a 的内容输出ostringstream到其他流(例如std::cout)。我知道我可以使用std::ostringstream::str(),但我认为将流内容复制到字符串然后再复制到另一个流会有开销。我发现我可以使用std::ostringstream::rdbuf()评论建议有 25 票)。但它会中断std::cout,如下面的测试程序的输出所示。难道我做错了什么?

结果是:

0 投票
2 回答
222 浏览

c++ - 使用 cout 链接时的 C++ ostringstream 奇怪行为

我是 C++ 初学者(来自 Java)。我有以下代码:

我重新定义了运算符 const* 以便我可以使用 cout<

但是,如果我现在运行程序,将第二个块注释掉(我有两个版本的 operator const*,默认情况下第二个被注释掉),它将显示

[ (1, 2) -> (1, 2) ]

但是在第二个块未注释的情况下运行时,输出如预期:

[ (1, 2) -> (3, 4) ]

当我在同一行中显示两个 Point 对象时似乎会出现问题(某种链接,尽管我不知道链接是否是正确的词)

我的问题是,为什么会这样?

更新

我已将 std::ostream& 运算符 << 函数添加到我的 Line 类中,但现在我收到以下错误:

问候, 奥勒良

0 投票
2 回答
2326 浏览

c++ - c++ - 如何从ostringstream中获取char指针而不使用c ++中的副本

我有一个包含一些数据的 ostringstream 变量。我想设置一个指向 ostringstream 中数据的 char * 指针。

如果我执行以下操作:

在 ofs 中有一个字符串内容的副本。我想在没有副本的情况下获得指向该内容的指针。

有没有办法这样做?

0 投票
5 回答
236 浏览

c++ - 为什么 ostringstream 没有清空?

我正在尝试通过 ostringstream 将 int 转换为字符串,但每次我将数据放入流中时,它都会保留在流中。我已经尝试使用两者.flush()<<endl但流永远不会清空。这个问题表明我并没有真正得到流(我没有,仍在努力)而且我正在做的是胡说八道和不必要的。

目前我得到的输出

代替

0 投票
1 回答
171 浏览

c++ - 如何在序列化期间插入字符串流的中间?

我向这个 oa 添加可变数量的内容,像这样

矩阵参考 - http://robot.kaist.ac.kr/haptics/chai3d-2.0.0_Doc/resources/html/structc_matrix3d.html

现在,当我完成时,我想在 udp 发送之前插入我添加到此存档中的矩阵数量,然后再开始添加矩阵。但我也知道我添加了多少矩阵,在我将它们添加到流中之后

我该怎么做?

0 投票
2 回答
901 浏览

c++ - 尝试从 ostream 打印但打印空白

我有很多日志记录功能,现在可以接受ostringstream&. 我的目标是让他们能够接受用一行编写的流,如下所示:

我无法大幅更改方法原型,因为我有很多仍然可以工作的遗留代码。我想将其更改为,ostream&因为这是<<. 现在原型的形式是:

在阅读此处c++ stringstream to ostream to string后,我建议的更改是(让我们忽略其他参数):

以下行有效:

但这会打印一个空白:

stringstream(由于某种原因,这实际上可以与 a 一起使用)

第二种形式必须有效,因为这是我的遗留代码的编写方式。

此外,如果我可以避免像stringstream().flush()我喜欢一个解决方案那样写一些不雅的东西,那么如果你这样做,该线程中的每个解决方案都有效

但如果你这样做不会编译

编辑:澄清了我不能破坏的旧原型。

0 投票
4 回答
3835 浏览

c++ - 逐行反转 ostringstream

应打印以下内容:

(1,2)

(1,3)

(1,4)

我怎样才能按行反转输出以便打印:

(1,4)

(1,3)

(1,2)