挑戰C++程式語言 ──第7章 輸入與輸出
本章主題 格式化的輸出 字元、字串的輸入與輸出 檔案資料的存取
格式化的輸出 設定輸出欄寬 : setw(int n) 設定對齊方式 : left 、right 設定輸出的小數點位數 : setprecision(int n) 設定以小數點方式輸出 : fixed 設定以科學記號方式輸出 : scientific
格式化運作子總整理
字元的輸入與輸出 【讀取字元的語法】 1. cin >> ch; 2. cin.get(ch); ch 是一個字元型態或整數型態的變數。 【輸出字元的語法】 1. cout << ch; 2. cout.put(ch);
字串的輸入與輸出 【讀取字串的語法】 1. cin >> s1; // 讀取字串,存入string s1 2. getline(cin,s1); // 讀取一行字串,存入string s1 3. getline(cin,s1,ch); // 讀取一行字串,以字元ch為輸入字串 // 的結束符號,存入string s1 4. cin.getline(s2,len); // 最多讀取len個字元,存入 // char陣列s2 5. cin.getline(s2,len,ch); // 最多讀取len個字元,以字元ch // 為輸入字串的結束符號,存入 // char陣列s2 【輸出字串的語法】 1. cout << s1; 2. cout.write(s2,len); // 將char陣列s2前len個字元輸出。
檔案資料的存取 文字檔(Text File) 二進位檔(Binary File) open close end of file
文字檔的存取 Data2.txt fin fout
文字檔的存取 ifstream fin; fin.open("data1.txt"); ofstream fout; #include <fstream.h> string s; ifstream fin("data1.txt"); ofstream fout("data2.txt"); if (!fin){ // 檢查輸入檔fin是否成功開啟 cout << "輸入檔案[data1.txt]無法開啟" << endl; return 1; } if (!fout){ // 檢查輸出檔fout是否成功開啟 cout << "輸出檔案[data2.txt]無法開啟" << endl; } while (!fin.eof()){ // 檢查輸入檔fin是否還有資料 getline(fin,s); // 自輸入檔fin讀取一行字串 fout << s << endl; // 將字串寫到輸出檔fout cout << s << endl; } fin.close(); // 關閉輸入檔fin fout.close(); // 關閉輸出檔fout ofstream fout; fout.open("data2.txt");
檔案的存取 argc argv ifstream fin(argv[1]); ofstream fout(argv[2]);
檔案存取的分解動作
檔案的開啟模式
檔案的開啟模式 ifstream物件的內定開啟模式為ios:in, 該物件為一個輸入檔案。 ofstream物件的內定開啟模式為 ios:out|ios::trunc,該物件為一個輸出檔案 並且在開啟檔案後隨即將檔案內原有的資料 清除。 fstream物件的內定開啟模式為ios:in|ios::out
檔案的開啟模式 ofstream fout("temp",ios::out|ios::app); ofstream fout(argv[2],ios::out|ios::app) ;
二進位檔的存取 ofstream fout(argv[2],ios::out|ios::app|ios::binary); // 開啟argv[2],並指定其為二進位輸出檔,以append方式寫入資料 fout.write(reinterpret_cast<char*>(&Cpp[i]),sizeof(Cpp[i])); // 以二進位方式寫入一筆記錄到 fout ifstream fin2(argv[2],ios::in|ios::binary); // 重新開啟argv[2],並指定其為二進位輸入檔 fin2.read(reinterpret_cast<char*>(&Cpp[i]),sizeof(Cpp[i])); // 從fin2 讀入一筆記錄
結論 字元及字串的輸入與輸出指令
結論 檔案資料存取步驟