似乎很少有人強調c++的格式化輸出的問題,那是因為因為c++的編譯器默默地做著許多格式化的動作,以保證c++ style格式化輸出與c-style的格式化的乙個根本不同,c++style的格式化輸出是型別安全的(type-safe),而c-style不是。當然,我們也可以定製這些格式化的動作,就像c那樣,而不全都拜託編譯器。
bool b = bool(); // 顯式地呼叫其建構函式實現對基本型別的初始化
std::cout
<< std::boolalpha << b << std::endl; // 輸出為'false',而不是將bool型別轉化為『0』
如上圖的輸出顯示,setw()預設是右對齊。
共有兩種對齊方式的設定:std::ios::left
,std::ios::right
,所用到的api是std::setiosflags
,以及std::resetiosflags
。
// 避免使用科學計數法?
使用setprecision()
設定的精度位數,最後的輸出結果是一種四捨五入的版本;
std:
:cout
<< std:
:setiosflags(std:
:ios
::fixed)
<< std:
:setprecision(4) << 2./3
<< std:
:endl; //
0.6667
std::cout.precision(20);
std::setfill('')
void showdate(int m, int d, int y) // 月 日 年
std::hex
,std::oct
unsigned
long x = 64206;
std::cout
<< x
<< " in base 8 is \""
<< std::oct << x << "\""
<< " in base 16 is \""
<< std::hex << x << "\""
<< std::endl;
c++庫函式並沒有提供乙個任意進製的轉換,如下是乙個轉換版本:
std::string convbase(unsigned long val, long
base)
while(val);
}return ret;
}
std::cout
<< std::fixed << somenumber<< std::endl;
C 基礎之格式化輸出
在c語言裡面,使用printf 函式格式化輸出。例如printf d f 2.5f a,b,c 但是在c 裡面就尷尬了,cout a b c endl 輸出的都是預設格式,這些往往不是我們需要的格式。在c 裡面也提供了格式化輸出的方法,但是方法比c語言稍微麻煩。c 格式化輸出需要引入標頭檔案 inc...
C 格式化輸出
int a 12345678 格式為sring輸出 label1.text string.format asdfadsfadsfasdf a label2.text asdfadsf a.tostring adsfasdf label1.text string.format asdfadsfadsf...
c格式化輸出
printf 函式是格式化輸出函式,一般用於向標準輸出裝置按規定格式輸出資訊。在編寫程式時經常會用到此函式。printf 函式的呼叫格式為 printf 格式化字串 參量表 其中格式化字串包括兩部分內容 一部分是正常字元,這些字元將按原樣輸出,另一部分是格式化規定字元,以 開始,後跟乙個或幾個規定字...