在C語言中,用printf()和scanf()進行輸入輸出,但是不能保證所輸入輸出的數據是安全、可靠的。C++的I/O操作時類型安全的(type safe)。
iostream頭文件中定義了四種流對象,分別是cin、cout、cerr和clog。其中,向鍵盤輸入時用cin流,向顯示器輸出時用cout流,向顯示器輸出錯誤信息
時用cerr和clog流。
cerr和cout的流的區別:
兩者雖然都是向顯示器輸出數據,但是cout可以重定向到其他文件,而cerr只能向顯示器輸出錯誤提示信息,而且錯誤信息是根據用戶需要設置的。
clog流和cerr差不多,都是向顯示器輸出錯誤信息,但是cerr是不經過緩衝區,直接顯示在顯示器上,而clog是先經過緩衝區,等到緩衝區滿
或者遇到endl時,才向顯示器輸出結果。
格式輸出數據
方法一:使用控制符(但要包含頭文件 iomanip)
例子:
int a;
cin>>a;
cout<<"dec:"<<dec<<a<<end; // 以十進制輸出整數a
cout<<"hex:"<<hex<<a<<endl; //以十六進制輸出整數a
cout<<"oct"<<setbase(8)<<a<<end; //以八進制輸出整數a
char *p="china";
cout<<setw(10)<<p<<endl; //指定輸出域寬爲10,輸出字符串 輸出結果爲 china
cout<<setfill('*')<<setw(10)<<p<<endl; //指定域寬爲10,空白部分用*代替 輸出結果爲*****china
方法二:用流對象的成員函數控制輸出格式
流成員函數setf通過格式標誌來控制輸出的格式,格式標誌在類ios中被定義爲枚舉類型,因此在引用的時候要加上類ios和域運算符::
例子:
inta=21
cout.setf(ios::showbase);//顯示基數符號(0x或0)
cout<<″dec:″<<a<<endl; //默認以十進制形式輸出a
cout.unsetf(ios::dec); //終止十進制的格式設置
cout.setf(ios::hex); //設置以十六進制輸出的狀態
cout<<″hex:″<<a<<endl; //以十六進制形式輸出a
cout.unsetf(ios::hex); //終止十六進制的格式設置
cout.setf(ios::oct); //設置以八進制輸出的狀態
cout<<″oct:″<<a<<endl; //以八進制形式輸出a
cout.unseft(ios::oct);