取得std::ostringstream里的内容可以通过str()和str(string&)成员函数。由于str()返回的是临时对象,因而会有如下误用:

const char *  pBuffer  =  oss.str().c_str();

pBuffer指向的内存已被析够!
测试代码:

ostringstream oss;
        oss  << " something you like " <<  endl;
 
 //  can't work!
 const char *  szData1  =  oss.str().c_str();
 
 // work!
std::string  ss  =  oss.str();
 const char *  szData2  =  ss.c_str();

例子:
用std::ostringstream获取整个文件的内容:

ifstream ifs( " in.txt " );
 
        istream_iterator < char >  inpos(ifs);
        istream_iterator < char >  endpos;
        ostream_iterator < char > out (oss);
        std::copy(inpos, endpos,  out );
 
 // 有些情况下需要取得buffer:
std::string  ss  =  oss.str();
 const char *  szData  =  ss.c_str();

转载于:https://www.cnblogs.com/dongzhiquan/archive/2011/03/28/1998213.html

std::ostringstream::str()返回临时对象相关推荐

  1. C++中替代sprintf的std::ostringstream输出流详解

    一.简单介绍 ostringstream是C++的一个字符集操作模板类,定义在sstream.h头文件中.ostringstream类通常用于执行C风格的串流的输出操作,格式化字符串,避免申请大量的缓 ...

  2. C++ std::ostringstream 是什么 怎么用

    一.简单介绍 ostringstream是C++的一个字符集操作模板类,定义在sstream.h头文件中.ostringstream类通常用于执行C风格的串流的输出操作,格式化字符串,避免申请大量的缓 ...

  3. MFC返回的临时对象指针成因?

    msdn在介绍GetDlgItem的时候,明确指出:   The  returned  pointer  may  be  temporary  and  should  not  be  store ...

  4. 【读书笔记】【程序员的自我修养 -- 链接、装载与库(三)】函数调用与栈(this指针、返回值传递临时对象构建栈、运行库与多线程、_main函数、系统调用与中断向量表、Win32、可变参数、大小端

    文章目录 前言 介绍 内存 内存布局 栈与调用惯例 堆与内存管理 运行库 入口函数和程序初始化 C/C++运行库 运行库与多线程 C++全局构造与析构 fread 实现 系统调用与API 系统调用介绍 ...

  5. 临时对象与NRV技术

    临时对象与NRV技术 <More Effective C++>中讲到,在C++中真正的临时对象是看不见的,它们不出现在你的源代码中.建立一个没有命名的非堆(non-heap)对象会产生临时 ...

  6. c/c++进阶之爱恨交织的临时对象: 二、天使与魔鬼

    c/c++语言最让人称道的便是性能了,在大气科学.地球物理等等需要高性能计算方面c/c++语言都是不二之选.甚至在分布式领域,由于ssd固态硬盘和万兆网络的兴起,当IO不再成为分布式系统的瓶颈,CPU ...

  7. c++字符串操作之std::ostringstream踩坑日记

    c++字符串操作之std::ostringstream踩坑日记 在开发过程中经常会遇到字符串操作,而std::string又没有format操作,这就很难受了. 于是我找到了std::ostrings ...

  8. 提高C++性能的编程技术笔记:临时对象+测试代码

    类型不匹配:一般情况是指当需要X类型的对象时提供的却是其它类型的对象.编译器需要以某种方式将提供的类型转换成要求的X类型.这一过程可能会产生临时对象. 按值传递:创建和销毁临时对象的代价是比较高的.倘 ...

  9. 第八天2017/04/17(1、拷贝构造、❤临时对象)

    调用拷贝构造函数的三种case 1. MyPoint p2 = p1; MyPoint p2(p1);case1中的重点:MyPoint p3 = MyPoint(3,3); //此时:C++编译器进 ...

最新文章

  1. shell命令之---Linux文件权限
  2. Asp.net中的两种刷新父窗体方法
  3. zhuan zai suffix tree
  4. Kafka 分布式环境搭建
  5. python画多边形_python – 使用matplotlib更有效地绘制多边形
  6. 复杂版---JS获得某天是一年当中的第几天
  7. Java中的变量Variable
  8. Python基础语法(if语句)
  9. 内网主机通过外网地址访问内网服务器
  10. AJAX的使用方式及教程
  11. WHQL之无需HLK结果就可获得微软驱动数字签名+Cannot specify [ClassInstall32] section解决
  12. 计算机登录账户删除著名恢复,win10系统删除计算机无用账户的恢复步骤
  13. heka 输出到mysql_heka - 基于Go开发的日志收集工具,可用Go或lua开发插件
  14. 扒一扒那些叫欧拉的定理们(八)——欧拉公式和自然对数的底e
  15. Linux环境变量文件介绍
  16. ACK Acknowledgement 确认 AES Advanced Encryption Standard 高级加密标准 ATM Asynchronous Transfer Mode异步传输模式
  17. Electron:前端人的最佳跨平台解决方案
  18. git pull 失败:Failed to connect to 127.0.0.1 port 10080: Connection refused
  19. 高尔顿钉板实验是二项分布吗?
  20. 步进电机应用c语言程序设计实例,51单片机调节步进电机应用C语言程序设计

热门文章

  1. zookeeper系列(二)实战master选举
  2. Moodle安全漏洞如何启动远程代码执行?
  3. redis有序集合(Zset)
  4. Eclipse 实用技巧
  5. android 模仿大众点评团购卷列表多余3条时折叠,点击时显示剩余全部的功能
  6. 第七章httpd.conf主配置文件的详解
  7. shell 脚本 自动发送邮件
  8. nhibernate入门系列: 使用Criteria载入对象
  9. 项目范围和项目范围管理
  10. 计算机网络第七版(谢希仁著)课后习题答案