printf vs cout

這篇文章所有的程式碼,都是使用Sublime Text 2 + minGW的g++

#include <iostream>
#include <iomanip>
#include <string>
#include <cstdio>

using namespace std;

int main()
{
    /*sample code*/
    return 0;
}

保留顯示空間,向右對齊

printf("%3d", 10);
cout.width(3);
cout << 10;
cout << setw(3) << 10;

空白填入的字元

(不行填入字串)
cout.width(3);
cout.fill('@');
cout << 10;
cout << setw(3) << setfill('@') << 10;

8/10/16進制

printf("%d\n", 10);
printf("%x\n", 10);
printf("%o\n", 10);
cout << dec << 10 << endl;
cout << hex << 10 << endl;
cout << oct << 10 << endl;

設定小數點格式輸出

printf("%2.2f\n", pi);

小數點顯示設定位數

有這一個就變成不含小數點,沒有的話就要含小數點
cout.setf(ios::fixed, ios::floatfield);
cout.setf(ios::fixed, ios::floatfield);  //加了這一行precision()定義就變成小數點(不含)後數2位
cout.precision(2); //小數點(含)後數2位(原始定義變成無效)
cout.width(5);  //2+1+2 小數點前2位+小數點+小數點後2位
cout << pi << endl;
cout.setf(ios::fixed, ios::floatfield);  //加了這一行precision()定義就變成小數點(不含)後數2位
cout << setw(5) << setprecision(2) << pi << endl; //保留顯示總寬度至少5個字元,小數點(含)後2位
恢復預設的小數點顯示設定
cout.unsetf (ios::floatfield); 

科學記號格式輸出

預設寬度

printf("%e\n", pi);
cout.setf(ios::scientific, ios::floatfield);
cout << pi << endl;

保留寬度

printf("%2.2e\n", pi);
cout.setf(ios::scientific, ios::floatfield);
cout << setw(5) << setprecision(2) << pi << endl;
cout.setf(ios::scientific, ios::floatfield);
cout.precision(2); //設定小數位數2位
cout.width(5);
cout << pi << endl;


參考資料:
[PPT]C/C++ch4
C Gossip: printf() 與 scanf()

沒有留言:

張貼留言

(什麼是留言欄訊息?)