日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

使用C++ ostringstream来格式化字符串输出

發布時間:2023/11/27 生活经验 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用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来格式化字符串输出的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。