C++ 輸入輸出流 詳解

C++輸入輸出流包含在頭文件<iostream>中,ios

流的定義以下:
經過設備驅動程序與鍵盤、屏幕、文件、打印機等進行交互, iostream 類提供與之交互的方法。
輸出流:
輸出流的對象是字節目標,三個重要的輸出流類是ostream、ofstream和ostringsream。
Ostream派生於basic_ostream支持預約義的流對象又:
cout標準輸出
cerr標準錯誤輸出,不通過緩衝
clog相似cerr,使用緩衝
注:緩衝是指將全部輸出集中存放,而後一次性顯示在屏幕上,避免屢次刷屏。ide

格式控制
輸出寬度:
輸出寬度能夠採用<iostream>中自帶的width()函數,或者使用< iomanip >中的setw, setw 和寬度均不截斷值。函數

使用width()函數代碼以下:spa

 1 #include "stdafx.h"
 2 #include <iostream>   
 3 using namespace std;  4 
 5 int _tmain(int argc, _TCHAR* argv[])  6 {  7     double values[] = { 1.23, 35.36, 653.7, 4358.24 };  8     for (int i = 0; i < 4; i++)  9  { 10         cout.width(10); 11         cout << values[i] << '\n'; 12  } 13  getchar(); 14     return 0; 15 }

使用setw()函數3d

 1 #include "stdafx.h"
 2 #include <iostream>  
 3 #include <iomanip>
 4 using namespace std;  5 
 6 int _tmain(int argc, _TCHAR* argv[])  7 {  8     double values[] = { 1.23, 35.36, 653.7, 4358.24 };  9     for (int i = 0; i < 4; i++) 10  { 11         //cout.width(10);
12         cout << setw(10) << values[i] << '\n'; 13  } 14  getchar(); 15     return 0; 16 }

程序運行結果:對象

寬度設置blog

設置寬度後,cout默認空白填充,若是須要填充某個字符,可採用fill()或setfill()函數。
採用fill()函數ip

 1 #include "stdafx.h"
 2 #include <iostream>   
 3 using namespace std;  4 
 5 
 6 int _tmain(int argc, _TCHAR* argv[])  7 {  8     double values[] = { 1.23, 35.36, 653.7, 4358.24 };  9     for (int i = 0; i < 4; i++) 10  { 11         cout.width(10); 12         cout.fill('*'); 13         cout << values[i] << '\n'; 14  } 15  getchar(); 16     return 0; 17 }

採用setfill()函數ci

 1 #include "stdafx.h"
 2 #include <iomanip>
 3 #include <iostream>  
 4 using namespace std;  5 
 6 
 7 int _tmain(int argc, _TCHAR* argv[])  8 {  9     double values[] = { 1.23, 35.36, 653.7, 4358.24 }; 10     for (int i = 0; i < 4; i++) 11  { 12         cout.width(10); 13         
14         cout << setfill('*') << values[i] << '\n'; 15  } 16  getchar(); 17     return 0; 18 }

程序運行結果:字符串

 

精度設置

浮點的默認精度默認爲六,若是須要修改,使用setprecision()。數字輸出能夠設置爲固定型和科學型,輸出形式採用setiosflags(ios::fixed)控制,fixed表示固定型,scientific表示科學型,默認爲科學型。

科學型代碼:

 1 #include "stdafx.h"
 2  
 3 #include <iostream>  
 4 using namespace std;  5 
 6 int _tmain(int argc, _TCHAR* argv[])  7 {  8     double values[] = { 1.23, 35.36, 653.7, 4358.24 };  9     for (int i = 0; i < 4; i++) 10         cout << setprecision(1) 11         << values[i] 12         << endl; 13  getchar(); 14     return 0; 15 }

運行結果:

 

使用固定記數法

 1 #include "stdafx.h"
 2 #include <iomanip>
 3 #include <iostream>  
 4 using namespace std;  5 
 6 int _tmain(int argc, _TCHAR* argv[])  7 {  8     double values[] = { 1.23, 35.36, 653.7, 4358.24 };  9     for (int i = 0; i < 4; i++) 10         cout << setiosflags(ios::fixed) << setprecision(1) 11         << values[i] 12         << endl; 13  getchar(); 14     return 0; 15 }

運行結果:

將整形數字按照不一樣進制輸出:

 1 #include "stdafx.h"
 2  
 3 #include <iostream>  
 4 using namespace std;  5 
 6 int _tmain(int argc, _TCHAR* argv[])  7 {  8  
 9     cout << 3536 << endl;//十進制
10     cout <<dec<< 3536 << endl;//十進制
11     cout << oct << 3536 << endl;//八進制
12     cout << hex << 3536 << endl;//十六進制
13 
14  getchar(); 15     return 0; 16 }

運行結果:

 

輸入輸出數據到文件:

 1 #include "stdafx.h"
 2 #include <iostream>  
 3 #include <fstream>
 4 
 5 using namespace std;  6 
 7 
 8 int _tmain(int argc, _TCHAR* argv[])  9 { 10  ifstream ifile; 11     char buff[5] = { 0 }; 12     ifile.open("d:/FILE1.txt", ios::in); 13     ifile.getline(buff, 5); 14     // Do some output 
15     ifile.close(); // FILE1 closed 
16 
17     cout << buff << endl;// 
18 
19  getchar(); 20     return 0; 21 }

運行結果:

採用>>運算符讀入整個字符串:

 1 #include "stdafx.h"
 2 #include <iostream>  
 3 #include <fstream>
 4 
 5 using namespace std;  6 
 7 
 8 int _tmain(int argc, _TCHAR* argv[])  9 { 10  ifstream ifile; 11     char buff[5] = { 0 }; 12     ifile.open("d:/FILE1.txt", ios::in); 13     ifile >> buff; 14     // Do some output 
15     ifile.close(); // FILE1 closed 
16 
17     cout << buff << endl;// 
18 
19  getchar(); 20     return 0; 21 }

運行結果:

寫入文件主要採用如下函數:

1 cout.flush()      //刷新緩衝區
2 cout.put()        //把字符寫入流中
3 cout.write()     //將字符串寫入當前輸出流中

代碼以下:

 1 #include "stdafx.h"
 2 #include <iostream>  
 3 #include <fstream>
 4 
 5 using namespace std;  6 
 7 
 8 int _tmain(int argc, _TCHAR* argv[])  9 { 10  ofstream ofile; 11     char buff[5] = { 0 }; 12     ofile.open("d:/FILE1.txt", ios::in); 13     if (!ofile) 14  { 15         cout << "打開文件失敗"  << endl; 16  } 17     ofile << "123" << endl; 18     ofile.write("xyz", 3); 19     ofile.put('M'); 20     ofile.flush();//清空緩衝區
21     ofile.close(); // FILE1 closed 
22 
23  getchar(); 24     return 0; 25 }

運行結果:

相關文章
相關標籤/搜索