草庐IT

ostringstream

全部标签

c++ - 有没有更有效的方法从流中设置 std::vector ?

目前,我设置了一个std::vector的值来自std::ostringstream如下:voidfoo(std::vector&data,std::stringstream&stream){data=std::vector(stream.str().begin(),stream.str().end());}我想知道在C++中使用STL是否有更有效的方法,或者我在这里给出的方法是否合适?使用std::stringstream会更好吗?相反? 最佳答案 正如评论中所指出的,由于对str()的两次调用,您的代码不正确。为了提高效率,您可

c++ - 如何 move std::ostringstream 的底层字符串对象?

#include#includeusingnamespacestd;templatestringToString(constT&obj){ostringstreamoss;oss如何movestd::ostringstream的底层字符串对象? 最佳答案 标准说std::ostringstream::str()returnsacopy.避免这种复制的一种方法是实现另一个直接公开字符串缓冲区的std::streambuf派生类。Boost.IOStreams使这变得非常简单:#include#include#includenamesp

c++ - std::ostringstream 打印 c 字符串的地址而不是其内容

我偶然发现了一个我一开始无法解释的奇怪行为(参见ideone):#include#include#includeintmain(){std::cout(s2(std::ostringstream()给出输出:Reference:0x804a03dRegularSyntax:somedataSemiinline:somedataInline:0x804a03d令人惊讶的是,在最后一个类型转换中,我们有地址,而不是内容!为什么会这样? 最佳答案 表达式std::ostringstream()创建一个临时的,operator需要const

c++ - std::ostringstream 打印 c 字符串的地址而不是其内容

我偶然发现了一个我一开始无法解释的奇怪行为(参见ideone):#include#include#includeintmain(){std::cout(s2(std::ostringstream()给出输出:Reference:0x804a03dRegularSyntax:somedataSemiinline:somedataInline:0x804a03d令人惊讶的是,在最后一个类型转换中,我们有地址,而不是内容!为什么会这样? 最佳答案 表达式std::ostringstream()创建一个临时的,operator需要const

c++ - 为什么 snprintf 比 ostringstream 快,还是这样?

我在某处读到snprintf比stringstream快。有没有人有任何经验?如果是,为什么会更快。 最佳答案 std::ostringstream不是要求变慢,但在实现时通常会变慢。FastFormat'swebsitehassomebenchmarks.流的标准库设计比snprintf支持的要多得多。该设计是可扩展的,并包括由公开公开的方法调用的protectedvirtual方法。这允许您从流类之一派生,并确保如果您重载protected方法,您将获得所需的行为。我相信编译器可以避免virtual函数调用的开销,但我不知道有任

c++ - 为什么 snprintf 比 ostringstream 快,还是这样?

我在某处读到snprintf比stringstream快。有没有人有任何经验?如果是,为什么会更快。 最佳答案 std::ostringstream不是要求变慢,但在实现时通常会变慢。FastFormat'swebsitehassomebenchmarks.流的标准库设计比snprintf支持的要多得多。该设计是可扩展的,并包括由公开公开的方法调用的protectedvirtual方法。这允许您从流类之一派生,并确保如果您重载protected方法,您将获得所需的行为。我相信编译器可以避免virtual函数调用的开销,但我不知道有任

c++ - 区别 stringstream 和 ostringstream

我正在尝试下面的代码段,但它没有提供所需的输出:#include#includeusingnamespacestd;voidMyPrint(ostream&stream){cout我知道stringstream和ostringstream之间唯一可能的区别是后者强制方向并且比stringstream快一点.我错过了什么吗?PS:之前发了一个类似的问题,但没有得到任何答案。 最佳答案 std::stringstream和std::ostringstream通过不同标记到std::stringbuf.特别是,std::stringbuf

c++ - 如何将值从 ostringstream 复制到字符串?

我试过了:ostringstreamoss;readastringfromfileandputtooss;stringstr;str>’in'oss>>str'"如果我使用str=oss.str();它没有打印字符串的值,而是打印出"...0xbfad75c40xbfad75c40xbf...."likesmemoryaddress.谁能告诉我为什么?谢谢。 最佳答案 stringstr=oss.str();//thisshoulddothetrick 关于c++-如何将值从ostrin

C++ std::stringstream/ostringstream 和 UTF 字符

我正在编写一个程序来处理一些数据,将其输出到一个.csv文件,然后编写一个GNUplot脚本,然后调用GNUplot来执行该脚本并创建一个具有相同名称(只是扩展名不同)的图像文件.文件名包含UTF字符(我相信是UTF-8?),例如°、φ和θ。当我使用g++4.4.7在Linux中编译和执行它时,所有这些都工作得很好。然后我更改了我的代码以在MicrosoftVisualStudio2008中编译,当我运行该程序时问题就开始了。我使用以下两段代码制作一个标准的文件名字符串(我只是为各种文件添加扩展名)打开流以写入文件(GNUplot脚本和.csv文件之间的唯一区别是扩展名//Genera

c++ - 你如何清除一个 std::ostringstream 实例以便它可以被重用?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Howtoreuseanostringstream?我一直在使用std::ostringstream将float和int值转换为字符串,但无论如何我找不到重用实例。为了说明我的意思,以下是我尝试用来清除流的方法#include#includeusingnamespacestd;intmain(){ostringstreamstream;stream生成输出TestTest----Test----****这给我带来了一个问题,因为我必须创建许多ostringstream实例,这很浪费。显然clear()和flu