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++入門指南單元二十三的練習
   作者:張凱慶 */
回到練習題目

上一頁 練習 23.5 參考程式 - 練習檔案處理
回 C++ 入門指南 4.01 目錄
下一頁 練習 23.7 參考程式 - 練習判斷檔案是否存在
回 C++ 教材
回程式語言教材首頁