问题标签 [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.
c++ - 避免从 ostringstream 复制字符串
我有一个名字std::string
,我想通过接口填充数据std::ostream
并避免字符串复制。
一种涉及副本的方法是这样做:
我需要通过结果out
并且无法返回 ostr.str()
。
我想避免复制,out = ostr.str();
因为这个字符串可能非常大。
有没有办法,也许使用rdbuf()
s,将std::ostream
缓冲区直接绑定到out
?
澄清一下,我对and的自动扩展行为感兴趣,std::string
因此std::ostream
调用者不必在调用之前知道大小。
更新:我刚刚意识到无害的行out = ostr.str();
可能需要2 个副本:
- 第一次
str()
打电话 - 另一个由
std::string
赋值运算符。
c++ - 如何使用 std::ends 覆盖 std::ostringstream 中的字符串?
我想覆盖其中的字符串,std::ostringstream
但std::ends
不起作用。这是VS2012的问题,还是我做错了什么?这是示例代码:
编辑:
我得到了很多可以foo.str( std::string() )
用来清除字符串的答案......我知道。这个问题是从这里衍生出来的:如何重用 ostringstream?
我试图不重新分配缓冲区。
c++ - std::unique_ptr 和 std::ostringstream (SIGSEGV) 的奇怪行为
我目前正在尝试将 std::ostringstream 包装到 std::unique_ptr 中。我当前的代码可以编译,但在运行时,我遇到了分段错误。
当我不包装它时 - 使用旧的 c 样式指针,它运行良好。
有关更详细的概述,我正在使用 curlpp 将数据下载到 ostringstream 中。
这就是我正在做的事情:
分段错误发生在最后一行,这是回溯:
仅供参考,我的文件是从 #14 到 #12,上面的代码是文件 #12 的一部分。
现在,这很奇怪,当我编写休闲代码时,它可以正常工作:
这两种情况都将指针传递给运算符<<,但我似乎错了。
我哪里错了?
谢谢你的帮助 :)
注意:我想使用 unique_ptr 来实现 sink-source 模式。
c++ - C++ std::stringstream/ostringstream 和 UTF 字符
我正在编写一个程序,它处理一些数据,将其输出到一个 .csv 文件,然后编写一个 GNUplot 脚本,并调用 GNUplot 来执行脚本并创建一个具有相同名称的图像文件(只有不同的扩展名)。文件名包含 UTF 字符(我相信是 UTF-8?),例如 °、φ 和 θ。当我使用 g++ 4.4.7 在 Linux 中编译和执行它时,所有这些都可以正常工作。然后我修改了我的代码以在 Microsoft Visual Studio 2008 中编译,当我运行程序时问题就开始了。
我使用以下两位代码
- 制作一个标准文件名字符串(我只是为各种文件添加扩展名)
打开流以写入文件(GNUplot 脚本和 .csv 文件之间的唯一区别是扩展名
/li>
ofstream
写入的文件内容ofs
正确包含 UTF 字符,但是 stringstream-created 字符串fileName
和ostringstream
创建的文件名(即使不是使用 创建的fileName
,我也对其进行了测试)错误地显示了字符。
例子:
它应该是什么 - CDFvsRd 图 #32 - MWIR @ 300m,无太阳,30kts,θ=all°.csv
它最终是什么 - CDFvsRd 图 #32 - MWIR @ 300m,无太阳,30kts,Ï=allË .csv
我能用尽可能多的标准 C++ 做些什么来解决这个问题?将我的fileName
字符串转换为wstring
帮助吗?
c++ - 双打和 oStringStream 的奇怪行为
所以我正在开发一个表达式评估器,作为与工作相关的项目的内部组件。但是当涉及到浮点数学的输出时,我有一些奇怪的行为......
评估者接受一个字符串
看起来好像任何高于 e+004 科学记数法的浮点数都被四舍五入到最接近的整数。谁能解释为什么会发生这种情况以及我如何克服这个问题。
c++ - 具有递归可变参数函数的字符串流?
我希望能够使用 ostringstream 将多个不同的参数组合成一个字符串。这样我就可以记录生成的单个字符串而不会出现任何随机问题。
我做到了这一点:
所以我需要用我在 LogAll 函数中创建的 oss 替换 std::cout ,我尝试将它作为参数传递给其他函数,但它抱怨“已删除函数”......
所以:我怎样才能得到一个递归可变参数函数来接受另一个参数,ostringstream?
c++ - C++中任意长度字符串的字符串替换
我有一个从中得到的字符串ostringstream
。我目前正在尝试替换此字符串 ( content.replace(content.begin(), content.end(), "\n", "");
) 中的一些字符,但有时会出现异常:
我怀疑发生这种情况是因为字符串太大。这些情况的最佳做法是什么?在堆上声明字符串?
更新
我的完整方法:
c++ - 将字符串移出 std::ostringstream
如果我使用以下方法构造一个由空格分隔的浮点值列表组成的字符串std::ostringstream
:
然后我得到结果std::string
:
但是,这将导致字符串内容的不必要的深层复制,因为ss
将不再使用。
有没有办法在不复制整个内容的情况下构造字符串?
c++ - Redirect from a std::ostringstream to another std::ostringstream
I need write data from some std::ostringstream
to another std::ostringstream
. Of course, I can use str()
function
I'd like to know if there is more direct way to do the same.
c++ - 如何将 ostringstream 对象复制到另一个对象中(使用 gcc-4.7.0)
所有其他帖子都告诉我更改我的编译器,但我不能,因为我应该使用这个编译器。请帮忙!
^我真的不能上传做某事的部分,因为它是学校项目的一部分,但编译器在以下位置给我一个错误:os.swap(temp);
我也尝试了 = 运算符,但效果不佳