1. 程式人生 > >C ++基礎 | 格式化輸出,檔案輸入輸出(File IO),標頭檔案(Header Files)_3

C ++基礎 | 格式化輸出,檔案輸入輸出(File IO),標頭檔案(Header Files)_3

目錄

格式化輸出

檔案輸入輸出(File IO)

標頭檔案(Header Files)


格式化輸出

要格式化資料,我們可以使用轉義字串(Escape Sequence)也稱字元實體(Character Entity)。這些不需要任何額外的庫。

C ++ 轉義字串 與 其他語言非常相似。最常見的是:\ n  - 換行符\ t  - 製表符。如圖

我們還可以使用 iomanip庫 格式化輸出(如圖),包括作為雜湊標記包括 iomanip 並將其放在括號中,因為它儲存在標準庫位置。旦包含後,您可以使用此庫格式化輸出。例如,我們可以使用 setw 命令設定輸出的寬度。我已經設定了10個空格的寬度。

例如,此語句標準 cout ints設定為width為10,float將寬度設定為10並且"Doubles"後使用換行符,會生成以下輸出int,float和double(如圖)。您會注意到間距為10。看起來在單詞整數之後有更多空格,這只是因為 "Ints" 有四個字母,有六個空格,"Floats"有六個字母,有四個空格,然後"Doubles"有七個字母。

以下是是 setw 命令的使用例子:

#include <iomanip>

std::cout<<"\n\nThe text without any formating\n";
std::cout<<"Ints"<<"Floats"<<"Doubles"<< "\n";
std::cout<<"\nThe text with setw(15)\n";
std::cout<<"Ints"<<std::setw(15)<<"Floats"<<std::setw(15)<<"Doubles"<< "\n";
std::cout<<"\n\nThe text with tabs\n";
std::cout<<"Ints\t"<<"Floats\t"<<"Doubles"<< "\n";

 輸出:

例2:

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    int a = 45;
    float b = 45.323;
    double c = 45.5468;
    int aa = a + 9;
    float bb = b + 9;
    double cc = c + 9;
    int aaa = aa + 9;
    float bbb = bb + 9;
    double ccc = cc + 9;
    
    cout<<"a\040=\040"<<a<<'\n';
    cout<<"aa = a + 9 = "<<aa<<'\n';
    cout<<"aaa = aa + 9 = "<<aaa<<'\n';
    
    cout<<"\n\nb = "<<b<<'\n';
    cout<<"bb = b + 9 = "<<bb<<'\n';
    cout<<"bbb = bb + 9 = "<<bbb<<'\n';
    
    cout<<"\n\nc = "<<c<<'\n';
    cout<<"cc = c + 9 = "<<cc<<'\n';
    cout<<"ccc = cc + 9 = "<<ccc<<'\n';

    
    return 0;
}

 輸出:

這裡注意一個轉義字元:"\040","\040"中的040表示8進位制數40,即對應的10進製為32。即是空格符號。

例3:

#include <iostream>
 #include <iomanip>

 int main()
 {
     int a = 45;
     float b = 45.323;
     double c = 45.5468;
     int aa = a + 9;
     float bb = b + 9;
     double cc = c + 9;
     int aaa = aa + 9;
     float bbb = bb + 9;
     double ccc = cc + 9;

     std::cout<<"print with set width = 10\n";
     std::cout<<"Ints"<<std::setw(10);
     std::cout<<"Floats"<<std::setw(10);
     std::cout<<"Doubles"<<std::setw(10) << "\n";

     std::cout<< a;
     std::cout<< std::setw(12)<< b;
     std::cout<< std::setw(10)<< c << "\n";    

     std::cout<< aa;
     std::cout<< std::setw(12)<< bb;
     std::cout<< std::setw(10)<< cc << "\n";  

     std::cout<< aaa;
     std::cout<< std::setw(12)<< bbb;
     std::cout<< std::setw(10)<< ccc << "\n\n"; 

     std::cout<<"print with tabs\n";
     std::cout<<"Int"<<"\tFloats"<<"\tDoubles\n";
     std::cout<< aaa<<"\t"<< bbb<<"\t"<< ccc <<"\n"; 

     return 0;
 }

輸出:

檔案輸入輸出(File IO)

1。與其他程式語言一樣,C ++ 可以讀寫檔案。檔案IO的步驟包括 <fstream> 庫。這是包含讀取和寫入檔案的所有指令的庫。

2。然後我們需要建立一個流。我們有三種選擇來建立流,輸入,輸出或兩者。

(1) ofstream myfile。這個告訴我們我們要建立一個輸出流,該流的名稱是myfile,這就是我們用來寫入檔案的內容。

(2) ifstream myfile。我們正在建立一個名為myfile的輸入流,這是用於讀取檔案。所以輸入和輸出是指程式而不是檔案。

(3)fstream myfile。 Myfile將是我們將用於讀取和寫入檔案的流的名稱。

3。在我們建立了流之後,我們必須開啟該檔案。那麼我們說myfile.open("filename")

4。如果該檔案不存在,程式將建立它。然後,我們寫或讀檔案。

5。最後,使用myfile.close關閉該檔案。

在下一個練習中的內容如下:

1、您將看到輸出流和輸入流的執行情況。我希望你以兩種不同的方式使用這個程式。首先,更改名為input.txt的檔案的內容。

2、然後,將ifstream和ofstream更改為fstream。

我們來看一個例子:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main () {
    string line;
    //create an output stream to write to the file
    //append the new lines to the end of the file
    ofstream myfileI ("input.txt", ios::app);
    if (myfileI.is_open())
    {
        myfileI << "\nI am adding a line.\n";
        myfileI << "I am adding another line.\n";
        myfileI.close();
    }
    else cout << "Unable to open file for writing";

    //create an input stream to write to the file
    ifstream myfileO ("input.txt");
    if (myfileO.is_open())
    {
        while ( getline (myfileO, line) )
        {
            cout << line << '\n';
        }
        myfileO.close();
    }

    else cout << "Unable to open file for reading";

    return 0;
}

解析:

我們已經包含了fstream(如圖)。

首先,我們要寫入檔案(如圖)。我們將使用名為 myfileI 的輸出檔案流,並將輸入 input.txt 是我們要寫入的檔案,我們將追加到此檔案的末尾。通常,如果程式寫入檔案,我們可以開啟該檔案並檢視該檔案中新增的文字。在這種情況下我們不能這樣做,所以我們將無法在檔案中看到新增的文字,但是當我們從檔案中讀取時,我們將能夠看到新增的文字。

所以,我們有我們的 input.txt 檔案,它有三行,

我們將執行一個程式,將新增兩行。我正在新增一行,我正在新增另一行。

然後,它將讀出該檔案中的所有行。

程式執行,輸出:

當我們檢視 input.txt 時,它添加了行,我添加了一行,我添加了另一行。我們還可以繼續編輯 input.txt 檔案。

標頭檔案(Header Files)

正如我們所看到的,我們可以在C ++中包含其他庫。我們還可以包括我們自己的庫。傳統上,這些檔案稱為標頭檔案(Header Files),它們具有.hpp副檔名(為什麼叫.hpp,因為裡面h代表header也就是標頭檔案的意思),但任何副檔名都可以使用。

標頭檔案包含有關如何執行任務的資訊,而主程式包含有關如何完成任務的資訊。

讓我們看看標頭檔案如何與簡單的“Hello,world!”一起工作。我們可以測試這個程式執行。如圖

讓我們刪除與執行任務沒有直接關係的所有內容,包括 include 語句,在本例中為 iostream 和 string ,以及 using 語句,使用namespace.standard,讓我們將它們放在標頭檔案中。如圖

以下是我建立的標頭檔案,

現在,我們必須告訴編譯器包含標頭檔案。

請注意,我在這裡使用雙引號。

如果使用尖括號,則會出現編譯錯誤,因為 main.hpp 位於我們的本地工作目錄中。尖括號說,“檢視標準庫目錄”。現在,如果我們要執行這個程式,它就會像所有標題資訊仍然在 main.cpp 程式中一樣工作。

執行結果:


除錯的錯誤就是程式設計給你最好的東西,因為在每個錯誤上面都標誌著前進的一步。