C ++基礎 | 格式化輸出,檔案輸入輸出(File IO),標頭檔案(Header Files)_3
目錄
格式化輸出
要格式化資料,我們可以使用轉義字串(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 程式中一樣工作。
執行結果:
除錯的錯誤就是程式設計給你最好的東西,因為在每個錯誤上面都標誌著前進的一步。