C++中sprintf應用的辦法與printf的差別剖析。本站提示廣大學習愛好者:(C++中sprintf應用的辦法與printf的差別剖析)文章只能為提供參考,不一定能成為您想要的結果。以下是C++中sprintf應用的辦法與printf的差別剖析正文
本文實例講述了C++中sprintf應用的辦法與printf的差別。分享給年夜家供年夜家參考。詳細剖析以下:
起首我們在MSDN看一下printf的原型和sprintf的原型
int printf( const char *format [, argument]... );
和
int sprintf( char *buffer, const char *format [, argument] ... );
從界說來看二者的功效其實很類似的。
假如你接觸的掌握台的法式較多的話,見到printf的比擬多,printf函數打印成果到屏幕上,而sprintf函數可以完成其他數據類型轉換為字符串。
從以下幾點來講明一下
(1)函數的中前兩個參數是固定外,可選參數是隨意率性個,buffer是寄存字符串指針或許數組名字,fromat是格局化字符串,只需是printf應用的格局化字符串,在sprintf都可使用,格局化字符串是該函數的精華。
(2)起首可以把一個整型數據格局化為字符串。好比:
char str[20];
int i_arg = 12345;
sprintf(buf,"%-6d",i_arg);
(3)看一個浮點類型的例子。好比:
char str[20];
double d_arg = 3.1415926;
sprintf(str,"%6.2f",d_arg);
可以掌握精度
(4)銜接兩個字符串,也能夠將多個字符串聯接起來,%m.n在字符串的輸入中,m表現寬度,字符串共占的列數;n表現現實的字符數。%m.n在浮點數中,m也表現寬度,n表現小數的位數。好比:
char dest[256];
char src1[] = {'a','b','c','d','e'};
char src2[] ={'1','2','3','4'};
sprintf(dest,"%.5s%.4s",src1,src2);
也能夠靜態的截取字符串的某一些字符:
char dest[256];
char src1[] = {'a','b','c','d','e'};
char src2[] ={'1','2','3','4'};
sprintf(dest,"%.*s%.*s",2,src1,3,src2);
也能夠盜取浮點類型的有用位 sprintf(str,"%*.*",10,4,d_arg);
彌補一點,sprintf的前往值就是字符串的字符的個數,也就是strlen(str)的成果,
也能夠打印某個參數的地址
int i=2;
sprintf(str,"%0*x",sizeof(void *),&i);
或許用:
sprintf(str,"%p",&i);
另外這些都是都是多字節類型(ANSI)的函數,而關於unicode類型的應當應用的類似的函數:
int wprintf( const wchar_t *format [, argument]... );
int swprintf( wchar_t *buffer, const wchar_t *format [, argument] ... );
用法和下面的很類似的,就是類型分歧罷了,
關於printf和sprintf該函數的包括在<stdio.h>頭文件
而sprintf和wprintf函數包括在<stdio.h>或許<wchar.h>頭文件中。
願望本文所述對年夜家的C++法式設計有所贊助。