C++ 入門指南 4.01
練習 23.6 參考程式 - 練習使用者輸入與檔案處理
// 引入標準程式庫中相關的輸入、輸出程式
#include <iostream>
// 引入標準程式庫中相關的檔案處理程式
#include <fstream>
// cout 為 std 中的輸出物件
using std::cout;
// endl 為 std 中的斷行符號
using std::endl;
// string 為 std 中的字串型態
using std::string;
// cout 為 std 中的錯誤輸出物件
using std::cerr;
// fstream 為 std 中的檔案處理類別
using std::fstream;
// cin 為 std 中的輸入物件
using std::cin;
int main(void) {
// 使用者輸入的字元陣列
char inputtext[200];
// 讀取字串的暫存字元陣列
char readtext[200];
// 預計寫入檔名
string filename("userinput.txt");
// 宣告寫入檔案物件
fstream textfile;
// 宣告讀取檔案物件
fstream readfile;
// 使用者輸入文字
cout << "請輸入文字:";
cin.getline(inputtext, 200);
// 將字元陣列轉換成字串
string writetext = inputtext;
// 以指定檔名開啟檔案
textfile.open(filename, std::ios_base::app);
// 先檢查檔案是否開啟
if (!textfile.is_open()) {
// 顯示開啟失敗的訊息
cerr << "寫入失敗" << filename << endl;
} else {
// 開啟成功進行寫入
textfile.write(writetext.data(), writetext.size());
// 顯示寫入成功的訊息
cerr << "寫入成功" << endl;
// 關閉檔案物件
textfile.close();
}
// 以指定檔名開啟檔案
readfile.open(filename, std::ios::in);
// 先檢查檔案是否開啟
if (!readfile.is_open()) {
// 顯示開啟失敗的訊息
cerr << "開啟失敗" << filename << endl;
} else {
// 開啟成功進行讀取
readfile.read(readtext, sizeof(readtext));
// 顯示讀取成功的訊息
cerr << filename << " 開啟成功" << endl;
// 顯示讀取到的檔案內容
cout << readtext << endl;
// 關閉檔案物件
readfile.close();
}
// 最後回傳 0 給作業系統
return 0;
}
/* 《程式語言教學誌》的範例程式
http://kaiching.org/
檔名:exercise2306.cxx
編譯:g++ exercise2306.cxx
執行:./a.out
功能:C++入門指南單元二十三的練習
作者:張凱慶 */
回到練習題目