1. 程式人生 > >C++ 自制string的format函式

C++ 自制string的format函式

#include <stdlib.h>
#include <iostream>
#include <list>
#include <conio.h>
#include <time.h>
#include <algorithm>
#include <windows.h>
#include <sstream>
//標頭檔案引用較多, 有一些與本程式無關

static inline std::string format(const char *fmt,...)
{
#define FORMAT_MSG_BUFFER_SIZE (204800)
    char szBuffer[FORMAT_MSG_BUFFER_SIZE + 1] = { 0 };
    va_list args;
    va_start(args, fmt);
    vsnprintf(szBuffer, FORMAT_MSG_BUFFER_SIZE, fmt, args);
    va_end(args);
    std::string strRet  = szBuffer;
    return strRet;
}

using namespace std;

int main(int argc, char* argv[])
{
	ostringstream oss;
	int i = 0;
	char tempstr[8];
	i = 20;
	oss << format("%04d", i);//輸出結果為0020

	cout << oss.str() << endl;

	system("pause");
	return 0;
}

相關推薦

C++ 自制string的format函式

#include <stdlib.h> #include <iostream> #include <list> #include <conio.h> #

C/C++程式設計教訓----函式內靜態類物件初始化非執行緒安全(C++11之前)

不少程式設計師在編寫程式的時候,會使用函式內靜態(static)變數,既能滿足函式內這個變數可以持久的記錄某些資訊,又使其訪問範圍的控制侷限於函式內。但函式內靜態類物件初始化是非執行緒安全的。 問題背景 在我們產品中對log4cxx做了一些簡單的封裝 (採用VS2005編譯),其中會

C語言 trim函式實現

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> //去除尾部空格 char *rtrim(char *str) { if(str == N

C語言中函式宣告、形參、實參

函式原型: 原型prototype是函式的宣告;描述了函式的返回值與引數;  函式原型說明了兩點: 1、該函式的返回值 2、該函式的引數及其型別 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 函式的引數: 引數到底是什

C/C++開發】函式使用結構體、結構體指標作為返回值分析

函式使用結構體、結構體指標作為返回值分析 32位機,gcc編譯器 使用結構體作為返回值 分析反彙編程式碼可知,當被呼叫的子函式返回值為結構體的時候,呼叫函式將分配一段空間用於存放返回的結構體(使用一個結構體變數接受返回值),並將這段空間的地址作為呼叫時的引數壓棧。子程式不負責對要返回的結構體分

C/C++開發】函式指標與回撥函式

C++很多類庫都喜歡用回撥函式,MFC中的定時器,訊息機制,hook機制等待,包括現在在研究的cocos2d-x中也有很多的回撥函式。 1.回撥函式 什麼是回撥函式呢?回撥函式其實就是一個通過函式指標呼叫的函式!假如你把A函式的指標當作引數傳給B函式,然後在B函式中通過A函式傳進來的這個指標

C/C++開發】C++ 解構函式以及 delete 和delete[]的整理

轉自:http://hi.baidu.com/bystander1983/item/bf0b5c12b077cfec9913d651 delete和delete[] 的區別: C++告訴我們在回收用 new 分配的單個物件的記憶體空間的時候用 delete,回收用 new[] 分配的一組物

C++】物件函式的覆蓋、過載、多型

覆蓋 Coverage 在基類中定義了一個非虛擬函式,然後在派生類中又定義了一個同名同參數同返回型別的函式,既是覆蓋 在派生類物件上直接呼叫這個函式名,則只會呼叫派生類中的同名函式 #include <iostream> using namespace std;

C++之類與函式

1.類的作用域:①每個類都有自己的作用域,類成員都在類的作用域內,成員函式內可任意訪問成員變數和其他成員函式②物件可以通過.直接訪問公有成員,指向物件的指標通過->也可以直接訪問物件的公有成員③在類體外定義成員,需要使用 :: 作用域解析符指明成員屬於哪個類域。 //類體外定義成員 cla

C++各種建構函式的寫法【轉】

  (轉自:https://blog.csdn.net/baiyq369/article/details/54926983) 建構函式 ,是一種特殊的方法 。主要用來在建立物件時初始化物件, 即為物件成員變數賦初始值,總與new運算子一起使用在建立物件的語句中 。特別的一個類可以有

C++常見庫函式

C++常用庫函式   1、常用數學函式     標頭檔案 #include <math> 或者 #include <math.h>   函式原型

C十三:strcmp函式,比價字串

#include<stdio.h> #include<string.h> int main(){ char name1[6] = {"abcd"}; char name2[6] = {"abcd"}; int a = strcmp(name1,name2); //

c重定向函式

函式名:freopen 函式,以指定模式重新指定到另一個檔案。模式用於指定新檔案的訪問方式。 標頭檔案:stdio.h C89函式宣告: FILE *freopen( const char *filename, const char *mode, FILE *stream );

c#使用鉤子函式會出現字母重複和和少最後一個字元的問題

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System; using System.Collect

C語言isalpha函式

看程式碼: #include<ctype.h> #include<stdio.h> #include <iostream> using namespace std; int main(void){ char ch; int tot

c 語言 用函式遞迴來實現求 k 的 n 次方

       如果求取k的n次方,既可以用普通的方法實現,也可以用函式的遞迴來實現。        函式的遞迴即是自己呼叫自己的函式應用形式,即在main函式下定義一個函式,然後在這個函式內自己為了實現某個目的,函式

c/c++中system函式

原文地址:http://www.cnblogs.com/tianzeng/p/9550379.html   在windows下的system函式中命令可以不區別大小寫!  函式名: system  功 能: 發出一個DOS命令  用 法: #inc

c++中虛擬函式的理解

虛擬函式的作用,事實上就是實現了多型性,就是實現以共同的方法,但因個體差異而採用不同的策略。下面有程式碼例項來描述: class A{ public: void print(){ cout<<”This is A”<<endl;} }; class B:publ

C語言探究函式遞迴的巧妙之處(以斐波那契數列為例)

對於許多C語言的初學者來說,函式是一個比較重要的版塊.函式的使用不僅在學習程式設計的時期可以方便我們解決一些問題.它在未來的工作中也是程式設計師們經常運用的東西.而函式的遞迴是函式這一版塊比較難懂的東西.因此小編以輸出斐波那契數列的第N項為例,來探討函式的遞迴的應用給我們的程式碼帶來的方便.

gnu c的setbuf函式原始碼

libio/sebuf.c定義了sebbuf函式:void setbuf (FILE *fp, char *buf){  _IO_setbuffer (fp, buf, BUFSIZ);} libio/iosetbuffer.c定義了_IO_setbuffer函式:void _IO_s