1.標準輸出流
1.1 cout、cerr、clog流
cout
cout是console output的縮寫,意爲在控制檯的輸出
cout<<"Hello World!!"<<endl;
輸出:
圖解cout輸出原理:
cerr
cerr是console error的縮寫,意爲“在控制檯顯示出錯信息”
用法與cout類似
cerr<<"Wrong input!!"<<endl;
輸出:
clog
clog是console log的縮寫
clog與cerr作用相同,都是在終端顯示器上顯示出錯信息,
區別是:cerr輸出的信息不經過緩衝區,clog輸出的信息存放在緩衝區中,緩衝區滿或遇到endl時向顯示器輸出
clog<<"這是一個clog輸出的錯誤信息!"<<endl;
1.2 輸出格式控制
1.2.1控制符控制輸出格式
- 頭文件:#include < iomanip >
- 格式:cout<<格式控制符<<數據
控制符表:
設置輸出進制
cout<<hex<<"16進制:"<<20<<endl;
cout<<dec<<"10進制:"<<20<<endl;
cout<<oct<<"8進制:"<<20<<endl;
cout<<setbase(16)<<"16進制:"<<20<<endl;
cout<<setbase(8)<<"8進制:"<<20<<endl;
cout<<setbase(10)<<"10進制:"<<20<<endl;
設置輸出字符個數和填充字符
cout<<setfill('*')<<setw(10)<<"hello!"<<endl;
設置數字一共多少位
cout<<setprecision(3)<<3.1415<<endl;
cout<<setprecision(2)<<10000.3<<endl;
設置輸出數字對齊方式
cout<<setw(15)<<setprecision(3)<<setiosflags(ios::scientific);
cout<<setiosflags(ios::right)<<3.14159<<endl;
cout<<setiosflags(ios::left)<<3.14159<<endl;
cout<<setiosflags(ios::uppercase)<<setiosflags(ios::scientific)<<3.1415926<<endl;
1.2.2成員函數控制輸出格式
int a=21;
cout.setf(ios::showbase);
cout<<"dec:"<<a<<endl; //dec:21
cout.unsetf(ios::dec);
cout.setf(ios::hex);
cout<<"hex:"<<a<<endl; //hex:0x15
cout.unsetf(ios::hex);
cout.setf(ios::oct);
cout<<"oct:"<<a<<endl; //oct:025
char *pt="China";
cout.width(10);
cout<<pt<<endl; // China
cout.width(10);
cout.fill('*');
cout<<pt<<endl; //*****China
double pi=22.0/7.0;
cout.setf(ios::scientific);
cout<<"pi=";
cout.width(14);
cout<<pi<<endl; //pi=*3.142857e+000
cout.unsetf(ios::scientific);
cout.setf(ios::fixed);
cout.width(12);
cout.setf(ios::showpos);
cout.setf(ios::internal);
cout.precision(6);
cout<<pi<<endl; //+***3.142857
1.3 put函數
ostream類中有一個put函數,參數可以是單個字符或者ASCII碼
cout.put(97); //ASCII碼97就是字符a
cout.put('\n');
cout.put('a');
輸出:
2.標準輸入流
2.1 cin流
- 如果輸入流在正常狀態,cin的返回值爲true(真),即cin爲一個非0值
int a;
if(!(cin>>a)){
cerr<<"error!";
}else{
cout<<"finish!";
}
2.2 get函數
流成員函數get有3種形式:無參數、有一個參數、有三個參數
cin.get()
將輸入的句子,放在字符串緩衝區,用c一個一個讀取,然後一個一個輸出
int c;
cout<<"輸入一個句子:"<<endl;
while((c = cin.get())!=EOF){
cout.put(c);
}
cin.get(ch)
char c;
cin.get(c); //讀取一個字符放入c中
cout.put(c);
cin.get(字符串,字符個數,終止字符)
char ch[20];
cin.get(ch,10,'\n');
cout<<ch<<endl;
2.3其他常用函數
getline函數
char ch[20];
cin.getline(ch,10,'\n');
cout<<ch<<endl;
3.文本文件的操作
- 頭文件: #include < fstream >
3.1文件寫入
ofstream outfile; //創建輸出文件流類對象
float x = 3.2, y = 3.6;
outfile.open("test.txt",ios::app); //打開文件
if(!outfile){
cout<<"open error!"<<endl;
exit(1);
}else{
cout<<"open success!"<<endl;
}
outfile<<x<<"\t"<<y<<endl; //將變量值寫入文件
outfile.close(); //關閉文件
3.2文件輸出
從text.txt中讀入10個整數放在數組中,找出最大者和它在數組中的序號。
#include <iostream>
#include <fstream>
using namespace std;
int main(void)
{
int a[10], max, i, order;
ifstream infile("test.txt",ios::in);
if(!infile){
cerr<<"open error!"<<endl;
exit(1);
}
for(i=0;i<10;i++){
infile>>a[i];
cout<<a[i]<<' ';
}
cout<<endl;
max=a[0]; order=0;
for(i=1;i<10;i++)
if(a[i]>max)
{max=a[i]; order=i;} cout<<"max="<<max<<endl<<"order="<<
order<<endl;
infile.close();
return 0;
}