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

c++ - C++ 格式宏/​​内联 ostringstream

我正在尝试编写一个允许我执行类似操作的宏:FORMAT(a << "b" << c << d),结果将是一个字符串 - 与创建 ostringstream、插入a...d和返回相同.str()。就像是:

本质上,FORMAT(a << "b" << c << d) == f().

首先,我试过:

如果第一项是 C 字符串 ( const char *),它将以十六进制打印字符串的地址,并且下一项将正常打印。如果第一项是 an std::string,它将无法编译(没有匹配的 operator <<)。

这:

给出看似正确的输出,但0and\b当然存在于字符串中。

以下似乎有效,但编译时带有警告(获取临时地址):

有谁知道为什么 1 打印 c-string 的地址并且无法使用std::string? 1和3本质上不是一样的吗?

我怀疑 C++0x 可变参数模板将成为format(a, "b", c, d)可能。但是现在有办法解决这个问题吗?

0 投票
1 回答
677 浏览

c++ - 重新加载内联 ostringstream 宏

参考C++格式宏/内联ostringstream

问题在于允许内联对象以创建 iostream 样式的字符串的宏。

答案是:

用法(例如):

这很好用 - 使用 GCC。它也在 Visual C++ 2005 下编译和运行。但是对于后者,宏的所有使用都会导致空字符串,我对为什么以及如何修复它感到非常傻眼......?

0 投票
4 回答
57141 浏览

c++ - 如何重用 ostringstream?

我想清除并重用一个 ostringstream (和底层缓冲区),这样我的应用程序就不必做太多的分配。如何将对象重置为其初始状态?

0 投票
3 回答
2877 浏览

c++ - std::ostringstream 如何转换为布尔值?

我偶然发现了这段代码。

在上下文ostringstream中使用时意味着什么?bool

这可能是编译和运行时发生的错误用法吗?

0 投票
1 回答
1155 浏览

xcode - Mac OS X 端口在 glibstdc++ vsnprintf 中的 pthread_setspecific 中崩溃 - 如何排除故障?

我正在测试我的多线程服务器的 Mac OS X 端口。它启动了,但是在工作线程接受第一个客户端请求后不久,它就在 vsnprintf 中死掉了。

似乎 vsnprintf 正在尝试使用 pthread_setspecific 操作一些线程本地内存。这会取消引用一个错误的指针。然后,gdb 捕获一个 dlopen 调用,得到一个错误,并在尝试格式化它自己的错误消息时死掉。因为,要格式化错误,需要设置一些线程本地内存!

在此之前,我自己的代码成功使用了 pthread_create_key、pthread_getspecific 和 pthread_setspecific。我仔细记录了自己的访问,我认为它们没有破坏任何东西。

是否有可能 glibstdc++ 中的某些静态没有按时初始化?我怎么知道?

此外,我使用 g++ -pthread 进行编译和链接,但在我的可执行清单中没有看到 libpthread。

有谁知道如何进一步调试?

堆栈跟踪:

触发崩溃的代码:

编辑:我相信这与使用 XCode 3.2 DEBUG 配置的 ostringstream 中的错误有关。请参阅c++ 中 int 的 ostringstream 问题

0 投票
2 回答
804 浏览

c++ - 动态输出文件名 (C++)

我正在尝试创建由动态索引(d = {0,...,NUM_DEMES-1})下标的输出文件。目前,我只获取第一个值(d=0)的输出文件。

这将创建 Abundances_0 和 Abundances_IDs_0,但仅此而已。我可以写那些文件。我可以很好地创建其他文件名,但文件只是没有出现。

我可能缺少有关流的一些基本知识,但我无法弄清楚是什么。

编辑

以下代码打印以筛选正确的文件名:

但是“stuff”和“more stuff”只出现在 Abundances_0 和 Abundances_IDs_0 中。

0 投票
2 回答
8603 浏览

c++ - 如何连接 Boost 序列化和 iostream 以将对象序列化和 gzip 到字符串?

我一直在使用 Boost 序列化库,它实际上非常好,并且让我可以制作简单的包装器来将我的可序列化对象保存为字符串,如下所示:

问题是,我刚刚发现也需要压缩我的序列化数据,所以我正在考虑使用 boost::iostreams 中的过滤器来做到这一点。我想出了如何使用文件成功地做到这一点:

但无法弄清楚如何正确保存到压缩字符串。问题是我没有刷新过滤器链,但我尝试了弹出和同步,但似乎没有任何效果。这是我的损坏代码:

结果,一些数据卡在某处的流缓冲区中,当我知道它应该是 43K 左右时,我总是得到一些完整的压缩数据块(16K 或 32K),因为我得到了(有效)输出使用我的 saveGZFile 方法。显然连接 ofstream 关​​闭并正确刷新,但连接 ostringstream 没有。

有什么帮助吗?(这是我的第一个 stackoverflow 问题——帮帮我,伙计们,你们是我唯一的希望!)

0 投票
7 回答
4098 浏览

c++ - 无论如何将以下内容编写为 C++ 宏?

应扩展为:

0 投票
2 回答
3468 浏览

c++ - 这些天“结束”有什么用?

几天前我遇到了一个微妙的错误,代码看起来像这样:

问题是ends'\0' 粘贴到实际看起来像这样ostringstream(即最后为空)theWholeLot"7HABITS\0"

现在这还没有出现,因为theWholeLot当时它被用来获取const char *部分,string::c_str()这意味着 null 被屏蔽了,因为它只是一个分隔符。然而,当它改为使用字符串时,null 突然意味着一些东西和比较,例如:

会失败。这让我想到:大概的原因ends是回到ostrstream流通常不以 null 终止并且必须这样str()(然后抛出不是 astring而是 a char *)才能正常工作的日子。

但是,既然不可能从 a 中剔除 a char *,那么ostringstreamusingends不仅是多余的,而且有潜在的危险,我正在考虑将它们全部从我的客户代码中删除。

ends任何人都可以看到在std::string唯一环境中使用的明显理由吗?

0 投票
4 回答
3985 浏览

c++ - 有没有办法减少 ostringstream malloc/free 的?

我正在编写一个嵌入式应用程序。在某些地方,我经常使用 std::ostringstream,因为它对我的目的非常方便。但是,我刚刚发现性能受到极大影响,因为向流中添加数据会导致对 malloc 和 free 的大量调用。有什么办法可以避免吗?

我的第一个想法是使 ostringstream 静态并使用 ostringstream::set("") 重置它。但是,这无法完成,因为我需要这些函数是可重入的。