程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++中替代sprintf的std::ostringstream輸出流詳解

C++中替代sprintf的std::ostringstream輸出流詳解

編輯:關於C++

一、簡單介紹

ostringstream是C++的一個字符集操作模板類,定義在sstream.h頭文件中。ostringstream類通常用於執行C風格的串流的輸出操作,格式化字符串,避免申請大量的緩沖區,替代sprintf。

派生關系圖:

二、ostringstream的基本使用

ostringstream的構造函數形式:

explicit ostringstream ( openmode which = ios_base::out );

explicit ostringstream ( const string & str, openmode which = ios_base::out );

有時候,我們需要格式化一個字符串,但通常並不知道需要多大的緩沖區。為了保險常常申請大量的緩沖區以防止緩沖區過小造成字符串無法全部存儲。這時我們可以考慮使用ostringstream類,該類能夠根據內容自動分配內存,並且其對內存的管理也是相當的到位。取得std::ostringstream裡的內容可以通過str()和str(string&)成員函數。

三、注意事項

std::ostringstream::str()返回的是臨時對象,不能對其直接操作。

例如會有如下誤用:

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

注意pBuffer指向的內存已被析構!!

四、代碼測試

<span style="font-size:18px;">#include <sstream>    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved