Cのprintfの機能++

背景

C ++は、出力COUTに使用することができます。
しかし、COUT出力フォーマットされたデータの一部は非常に面倒です。

例えば:

時間、分、および秒が現在の時刻を表し、要求:出力時刻12時00分○○秒の現在のフォーマットに従って。

//使用cout输出
cout<<hour<<":"<<min<<":"<<sec<<endl;

問題:

  1. 出力があまりにも多くの問題があるように、コードの可読性が高くありません。
  2. 一桁分、0プラス便利なフロントの場合。

printfの例

//使用printf输出上面的问题
print("%d:%0.2d:%0.2d",hour,min,sec);

説明:

使い慣れた高に上記のコードを読み取るとき。
printfの最初のパラメータは、文字列、出力形式の文字列表現です。
%dが順次置換文字列%dの、第二のパラメータから開始して、データを示します。
データが一桁である場合%の0.2Dは、発現され、出力が(0が先行する)2桁が依然としてあります。

詳細のprintf

あなたは上記の例から見ることができ、変数は、データを格納するための責任があります。
しかし、時には、私たちは、異なるフォーマットで同じ出力データを得ることを期待します。例えば、午前7時01で、COUTを使用すると、7:1となるが、我々は取得したい午前7時01分です。
変数ので、出力形式のため、printfの責任のデータを格納するための責任があります。(同じ値が異なるフォーマットであってもよいです)。

整数

プレースホルダ
%d  //输出十进制
%o  //输出无符号整数的八进制
%x  //输出无符号整数的十六进制(字母小写)
%X	//输出无符号整数的十六进制(字母大写)
フォーマット
%5d		//输出宽度为5(右对齐)
%-5d	//输出宽度为5(左对齐)
%+5d	//输出宽度为5(输出符号)
%05d	//输出宽度为5(前面补0,而不是空格)
%#o		//输出八进制前的0(进制前的标识符)
%#x		//输出十六进制前的0x(进制前的标识符)
例えば

例1:

int a=12;
printf("%d\n",a);       //输出12

例2:

int a=12;
printf("%o\n",a);       //输出14(因为十进制的12等于八进制的14)

例3:

int a=12;
printf("%x\n",a);       //输出c(因为十进制的12等于十六局进制的c)

例4:

int a=12;
printf("%5d\n",a);       //输出"   12"(默认右对齐,总共5个占位,前面补空格)

例5:

int a=12;
printf("%-5d\n",a);     //输出"12   "(负号表示左对齐,总共5个占位,后面补空格)

例6:

int a=-12;
printf("%+5d\n",a);     //输出"  -12"(正号表示输出符号,而不是在前面加"+")

例7:

//%02d表示输出宽度为2,不足2则在前面补0。比如表示时间的时候:
int hour=12,min=3,sec=2;
printf("%02d:%02d:%02d\n",hour,min,sec);    //输出"12:03:02"

小数

プレースホルダ
%f		//输出小数(保留到小数点后6位)
%e,E	//科学计数法,保留到小数点后6位(1.234560e+02)
%g,G	//以%f或%e中较短的输出宽度输出小数
フォーマット
%10f	//输出宽度为10(多出不会被截断)
%10.3f	//输出宽度为10(保留到小数点后3位)
例えば

例1:

float a=1.2;
printf("%f\n",a);       //输出1.200000

例2科学表記法:

float a=1234567;
printf("%e\n",a);   //输出1.234567e+06
//%e和%E分别表示用小写和大写的e表示

例3

変数がどのような方法を表したときに、私たちが知らない場合は、%gの中で表現することができます。
例えば、1.2科学的表記法は、非常に面倒な表現する場合:1.200000e + 00の
別の例として、また面倒%F 1234567で:1,234,567.000000
自動的に良好な方法で表現%のG、によって決定することができます。

float a=1234567,b=1.2;
printf("a=%g\n",a);     //输出a=1.23457e+06
printf("b=%g\n",b);     //输出b=1.2

CHAR

プレースホルダ
%c		//输出单个字符
%s		//输出字符串
例えば

例1:

int a=65;
printf("%d\n",a);       //输出65
printf("%c\n",a);       //输出A

例2:

char * a="张三";
printf("我的名字是%s\n",a);     //输出"我的名字是张三"

ポインタ

%p		//输出指针指向的地址

例えば:

int a=10;
int *p=&a;
printf("变量a的地址为%p\n",p);      //输出"变量a的地址为0x7ffeefbff54c"

他の

%%		//输出%

公開された109元の記事 ウォン称賛51 ビュー90000 +

おすすめ

転載: blog.csdn.net/NetRookieX/article/details/104467678