【C++總複習】 第七章----輸入輸出流

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;
}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章