使用C++ ostringstream来格式化字符串输出
在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来格式化字符串输出相关推荐
- python 3.5 格式化字符串输出
1 #!/usr/bin/env python 2 #encoding: utf-8 3 #.strip('里面可以去掉字符串中两边的字符') 4 name = input('name :').str ...
- 学习笔记(9):C#急速入门-格式化字符串输出
立即学习:https://edu.csdn.net/course/play/20589/257718?utm_source=blogtoedu 格式化输出:字符串里可以用{n}来挖坑.但是n必须从0开 ...
- 基础二(格式化字符串、运算符和编码)
一.Python的输出 (1)纯输出一个字符串或数字 print("Hello World") #输出 Hello World print(34) #输出 34 (2)利用字符串连 ...
- c++字符串输入_【pwn】什么是格式化字符串漏洞?
0x00 前言 格式化字符串漏洞是在CWE[1](Common Weakness Enumeration,通用缺陷枚举)例表中的编号为CWE-134,由于在审计过程中很容易发现该漏洞,所以此类漏洞很少 ...
- python超市收银程序_4超市收银程序(格式化字符串,input)
price = float(input("请输入苹果的价格")) weight = float(input("请输入重量,单位是斤")) zongjia = p ...
- 跟着CTF-Wiki学pwn|格式化字符串(1)
文章目录 格式化字符串漏洞原理介绍 格式化字符串函数介绍 格式化字符串函数 格式化字符串 参数 格式化字符串漏洞原理 格式化字符串漏洞利用 程序崩溃 泄露内存 泄露栈内存 获取栈变量数值 获取栈变量对 ...
- 格式化字符串漏洞利用 三、格式化字符串漏洞
三.格式化字符串漏洞 原文:Exploiting Format String Vulnerabilities 作者:scut@team-teso.net 译者:飞龙 日期:2001.9.1 版本:v1 ...
- python使用字典格式化字符串-Python中将(字典,列表等)变量格式化输出
Python中将(字典,列表等)变量格式化成(漂亮的,树形的,带缩进的,JSON方式的)字符串输出: 变量类型是列表,列表中每个值是个字典类型变量. 格式化输出的效果,希望是那种树状结构,带缩进的,而 ...
- Java学习笔记(七)--格式化字符串及格式输出
一.格式化字符串 String 类的静态 format() 方法用于创建格式化的字符串. 1.format(String format, Object···args) 该方法使用指定的格式字符串和参数 ...
最新文章
- c语言 栈求解表达式_非线性方程组的编程求解方法
- 获取当前页面的宽度和高度
- winsock select模型实现
- jQuery Ajax调用后如何管理重定向请求
- 10.3 广州集训 Day2
- Javascript 函数详解
- php 类的实现 完整例子
- Vue 组件间通信六种方式
- 软件质量包括哪些特性?软件质量保证的主要任务是什么?
- jquery - 正则表达式
- 【clickhouse】clickhouse Uint64 不是64位 超限不报错
- (二)ubuntu使用launchpad.net线上编译
- Faster R-CNN——学习笔记~
- Atitit xml转json总结 目录 1.1. XML和JSON之间没有直接映射;元素类型问题	1 1.2. Xml与json的对应关系	2 1.3. 范例	2 2. Jsonlib的问题,,不
- java exchangedeclare_Exchange服务器之RabbitMQ四种Exchange类型之Topic (Java)
- 数电第三章 布尔代数与逻辑函数化简
- koolproxy无法下载https证书的解决方法
- CTO、技术总监、首席架构师的区别
- 直接插入法(java实现)
- 02 【版本控制命令】
热门文章
- 2022-2028年中国锅炉行业投资分析及前景预测报告
- javascript与浏览器学习(一)
- Windows Live Writer发布测试
- 细数技术指标-[转载]
- 有关 ecshop 属性 {$goods.goods_attr|nl2br} 标签的赋值问题
- Kinect V1读取图像数据(For Windows)
- 私钥设置_私钥忘了怎么办,还能找回来吗?能
- Java数据类型及变量作业_day02、Java变量与数据类型
- linux ubuntu安装 mono,在Ubuntu 18.04系统中安装Mono及基本使用Mono的方法
- linux停止客户端,linux – 从客户端打印motd停止ssh登录?