在Linux C中,我们通常使用snprintf来格式化字符串输出,但是有一个问题,就是可能会频繁申请大的缓冲区,并且无法实现字符串的动态增加,比如你定义的字符缓存为100个字节,如果你格式化以后的内容超出了100个字节,那边后面的内容就无法看见. 所以一般来讲都为定义一个足够的字符缓冲,但这样的效率是很差的. 下面使用C++的ostringstream方式可以很轻松地搞定这些问题。

如果要重复使用一个ostringstream对象,并且需要在下次使用前清空缓冲区,则可以使用str()函数重设置缓冲区. 如:

ostringstream  osSql;
//first time
osSql<<"SELECT  COUNT(*) FROM t_XXXX";
...
clsConnection.Query( osSql );
....
//second time
osSql.str("");//重新使用一个空的缓冲区
osSql<<"INSERT INTO **********"<<  strBigText  ;
.......

这里说明几点:

1.在一个函数中重用ostringstream时,需要清空它,方法是ostr.str("")

2.获取格式化好的字符串, 通过ostringstream::str()函数就可以返回一个string对象, 调用string::c_str() 或string::data()函数就可以获得一个指向字符缓冲的char*变量.

下面给出一段示例代码

//g++ -g test_ostringstream.cpp -o test_ostringstream
//
#include <string>
#include <sstream>
#include <iostream>
#include <unistd.h>using namespace std;int main(int argc, char* argv[])
{ostringstream os;for(int i=0; i<10000; i++){os.str("");string s = "a";double d = i + 0.100;os << "The x is: "<< i << " " << s << " " << d;cout << os.str() << endl;if(i>0 && i%1000 == 0)usleep(10);}return 0;
}

运行截图如下:

参考文献

[1].C++ Primer第四版中文版 第258页

[2].http://zhilingluo.blog.hexun.com/12944836_d.html

[3].http://hi.baidu.com/gongziya/item/f395738a18dcbc53850fab03

使用C++ ostringstream来格式化字符串输出相关推荐

  1. python 3.5 格式化字符串输出

    1 #!/usr/bin/env python 2 #encoding: utf-8 3 #.strip('里面可以去掉字符串中两边的字符') 4 name = input('name :').str ...

  2. 学习笔记(9):C#急速入门-格式化字符串输出

    立即学习:https://edu.csdn.net/course/play/20589/257718?utm_source=blogtoedu 格式化输出:字符串里可以用{n}来挖坑.但是n必须从0开 ...

  3. 基础二(格式化字符串、运算符和编码)

    一.Python的输出 (1)纯输出一个字符串或数字 print("Hello World") #输出 Hello World print(34) #输出 34 (2)利用字符串连 ...

  4. c++字符串输入_【pwn】什么是格式化字符串漏洞?

    0x00 前言 格式化字符串漏洞是在CWE[1](Common Weakness Enumeration,通用缺陷枚举)例表中的编号为CWE-134,由于在审计过程中很容易发现该漏洞,所以此类漏洞很少 ...

  5. python超市收银程序_4超市收银程序(格式化字符串,input)

    price = float(input("请输入苹果的价格")) weight = float(input("请输入重量,单位是斤")) zongjia = p ...

  6. 跟着CTF-Wiki学pwn|格式化字符串(1)

    文章目录 格式化字符串漏洞原理介绍 格式化字符串函数介绍 格式化字符串函数 格式化字符串 参数 格式化字符串漏洞原理 格式化字符串漏洞利用 程序崩溃 泄露内存 泄露栈内存 获取栈变量数值 获取栈变量对 ...

  7. 格式化字符串漏洞利用 三、格式化字符串漏洞

    三.格式化字符串漏洞 原文:Exploiting Format String Vulnerabilities 作者:scut@team-teso.net 译者:飞龙 日期:2001.9.1 版本:v1 ...

  8. python使用字典格式化字符串-Python中将(字典,列表等)变量格式化输出

    Python中将(字典,列表等)变量格式化成(漂亮的,树形的,带缩进的,JSON方式的)字符串输出: 变量类型是列表,列表中每个值是个字典类型变量. 格式化输出的效果,希望是那种树状结构,带缩进的,而 ...

  9. Java学习笔记(七)--格式化字符串及格式输出

    一.格式化字符串 String 类的静态 format() 方法用于创建格式化的字符串. 1.format(String format, Object···args) 该方法使用指定的格式字符串和参数 ...

最新文章

  1. c语言 栈求解表达式_非线性方程组的编程求解方法
  2. 获取当前页面的宽度和高度
  3. winsock select模型实现
  4. jQuery Ajax调用后如何管理重定向请求
  5. 10.3 广州集训 Day2
  6. Javascript 函数详解
  7. php 类的实现 完整例子
  8. Vue 组件间通信六种方式
  9. 软件质量包括哪些特性?软件质量保证的主要任务是什么?
  10. jquery - 正则表达式
  11. 【clickhouse】clickhouse Uint64 不是64位 超限不报错
  12. (二)ubuntu使用launchpad.net线上编译
  13. Faster R-CNN——学习笔记~
  14. Atitit xml转json总结 目录 1.1. XML和JSON之间没有直接映射;元素类型问题 1 1.2. Xml与json的对应关系 2 1.3. 范例 2 2. Jsonlib的问题,,不
  15. java exchangedeclare_Exchange服务器之RabbitMQ四种Exchange类型之Topic (Java)
  16. 数电第三章 布尔代数与逻辑函数化简
  17. koolproxy无法下载https证书的解决方法
  18. CTO、技术总监、首席架构师的区别
  19. 直接插入法(java实现)
  20. 02 【版本控制命令】

热门文章

  1. 2022-2028年中国锅炉行业投资分析及前景预测报告
  2. javascript与浏览器学习(一)
  3. Windows Live Writer发布测试
  4. 细数技术指标-[转载]
  5. 有关 ecshop 属性 {$goods.goods_attr|nl2br} 标签的赋值问题
  6. Kinect V1读取图像数据(For Windows)
  7. 私钥设置_私钥忘了怎么办,还能找回来吗?能
  8. Java数据类型及变量作业_day02、Java变量与数据类型
  9. linux ubuntu安装 mono,在Ubuntu 18.04系统中安装Mono及基本使用Mono的方法
  10. linux停止客户端,linux – 从客户端打印motd停止ssh登录?