1. 程式人生 > >C++中簡單的文字檔案輸入/輸出

C++中簡單的文字檔案輸入/輸出

為了便於理解,我們把cout 用於控制檯輸出時的一些情況和寫入到文字檔案的情況進行類比:

cout 控制檯輸出

  1. 包含標頭檔案 iostream
  2. 標頭檔案 iostream 定義了一個 ostream 類用於處理輸出
  3. 標頭檔案 iostream 聲明瞭一個名為 cout 的 ostream 物件
  4. 指明名稱空間 std
  5. 可以結合使用cout和運算子<<來顯示各種型別的資料

文字檔案輸出(寫入到文字檔案)

  1. 包含檔案頭 fstream
  2. 標頭檔案 fstream 定義了一個ofstream 類用於處理輸出
  3. 宣告一個或多個 ofstream 物件,可以自由命名
  4. 指明名稱空間 std
  5. 把 3 中宣告的 ofstream 物件與檔案關聯起來,比如使用 open()方法
  6. 使用完檔案後,需要使用 close()方法將其關閉
  7. 還可以結合 ofstream 物件和運算子<<來輸出各種型別的資料

注意:cout 控制檯輸入輸出中,標頭檔案 iostream 聲明瞭一個名為 cout 的 ostream 物件,無需自己手動宣告;檔案輸出中,我們必須自己動手宣告一個 ofstream 物件,為其命名,將其同文件關聯起來。請看下面的例子:

#include<fstream>
ofstream OutFile;   //宣告一個 ofstream 物件
OutFile.open("study.txt"
); //將OF與“study.txt”檔案關聯起來

下面請看一個完整的程式,使用者輸入資訊,將資訊顯示到螢幕上,再將這些資訊寫入到文字檔案中:

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    char name[20];
    double height;
    double weight;
    ofstream outFile;//建立了一個ofstream 物件
    outFile.open("information.txt");//outFile 與一個文字檔案關聯
cout<<"Enter name: "; cin.getline(automobile, 20); cout<<"Enter height: "; cin>>year; cout<<"Enter weight: "; cin>>weight; // cout 控制檯輸出前面輸入的資訊 cout<<fixed; cout.precision(2); cout.setf(ios_base::showpoint); cout<<"Make and Model: "<<automobile<<endl; cout<<"Year: "<<year<<endl; cout<<"Was asking $"<<a_price<<endl; cout<<"Now asking $"<<d_price<<endl; // outFile 把資訊寫入到文字檔案 outFile<<fixed; //小數點格式顯示double outFile.precision(2); //設定精度 outFile.setf(ios_base::showpoint); //強制顯示小數點後的零 outFile<<"Name: "<<name<<endl; outFile<<"Height: "<<height<<endl; outFile<<"Weight: "<<weight<<endl; outFile.close(); //使用完文字檔案後要用close()方法將其關閉 return 0; }

接下來,我們再把cin 用於控制檯輸入時的一些情況和讀取文字檔案的情況進行類比:

cin 控制檯輸出

  1. 包含標頭檔案 iostream
  2. 標頭檔案 iostream 定義了一個 istream 類用於處理輸出
  3. 標頭檔案 iostream 聲明瞭一個名為 cin 的 istream 物件
  4. 指明名稱空間 std
  5. 可以結合使用cin和運算子>>來輸入各種型別的資料

文字檔案輸入(讀取文字檔案)

  1. 包含檔案頭 fstream
  2. 標頭檔案 fstream 定義了一個ifstream 類用於處理輸出
  3. 宣告一個或多個 ifstream 物件,可以自由命名
  4. 指明名稱空間 std
  5. 把 3 中宣告的 ifstream 物件與檔案關聯起來,比如使用 open()方法
  6. 使用完檔案後,需要使用 close()方法將其關閉
  7. 還可以結合 ifstream 物件和運算子>>來讀取各種型別的資料
  8. 可以用 cin 和 get() 方法來讀取一個字元,或用 cin 和 getline() 方法來讀取一行字元
  9. 可以結合使用 ifstream 和 eof()、fail()方法來判斷輸入是否成功

    如果試圖開啟一個不存在的檔案用於輸入將會導致後面使用 ifstream 物件讀取資料時發生錯誤,因此使用者需要使用 is_open() 方法檢查檔案是否被成功開啟,如下:

#include <fstream>
#include <cstdlib>
ifstream InFile;
InFile.open("information.txt");
if(!Infile.is_open()){
    exit(EXIT_FAILURE);
}

如果檔案被成功開啟, is_open() 方法將返回 true , exit()的原型在標頭檔案 cstdlib 中被定義,exit(EXIT_FAILURE) 用於終止程式。

下面請看一個完整的程式,使用者開啟指定的文字檔案,讀取檔案中的 double 型別資料,並在控制檯輸出所讀取資料的數目、總和以及平均數:

#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
const int SIZE = 60;
int main()
{
    char fileName[SIZE];
    ifstream InFile;
    cout<<"Enter the name of data file: ";
    cin.getline(fileName, SIZE);
    cout<<fileName<<endl;
    InFile.open(fileName);
    if(!InFile.is_open()){
        cout<<"Could not open the file "<< fileName <<endl;
        cout<<"Program terminating.\n";
        exit(EXIT_FAILURE);
    }
    double value;
    double sum = 0.0;
    int count = 0;
    InFile >> value;
    while(InFile.good()){      
        ++count;
        sum += value;
        InFile >> value;
    }
    if (InFile.eof())
        cout<<"End of file reached:\n";
    else if (InFile.fail())
        cout<<"Input terminated by data mismatch.\n";
    else
        cout<<"Input terminated for unknown reason.\n";
    if(count == 0)
        cout<<"No data processed.\n";
    else{
        cout<<"Items read: "<<count<<endl;
        cout<<"Sum: "<<sum<<endl;
        cout<<"Average: "<<sum/count<<endl;
    }
    InFile.close();
    return 0;
}

相關推薦

C++簡單文字檔案輸入/輸出

為了便於理解,我們把cout 用於控制檯輸出時的一些情況和寫入到文字檔案的情況進行類比: cout 控制檯輸出 包含標頭檔案 iostream 標頭檔案 iostream 定義了一個 ostream 類用於處理輸出 標頭檔案 iostream 聲明瞭一

關於c++進位制輸入輸出

#include <iostream> using namespace std; void main() { int a = 010, b = 10, c = 0X10;//以0開頭的數是八進位制數,0X開頭的是16進位制數. //以十進位制顯示資料; cout &

C/C++一些基本的輸入輸出用法

1.scanf()與printf() %c格式能夠識別空格和換行並將其輸入 %s通過空格和換行來識別字符串的結束 2.getchar()與putchar() 用來輸入和輸出單個字元 3.gets()與puts() 用來輸入一行字串,gets()識別換行符來

簡單檔案輸入\輸出

1、寫入到文字檔案 對於檔案輸入,c++使用類似於cout的東西。先複習一些有關將cout用於控制檯輸出的基本事實,為檔案輸出做準備。 控制檯輸出: 必須包含標頭檔案iostream。 標頭檔案iostream定義了一個用於處理輸出的ostream類

比賽控制從檔案輸入輸出,freopen或fopen版

比賽或者練習中,輸入重複內容進行debug讓人頭疼,因此,平時練習,可以在檔案裡輸入輸出,避免命令列的繁瑣。 freopen版,從input.txt輸入,printf會列印到檔案output.txt中。 #include<stdio.h> int main(

C++】如何進行簡單檔案輸入輸出?(基本操作及程式碼示例)(程式設計習慣)

使用cin進行輸入時,程式將輸入 視為一系列的位元組,每個位元組都被解釋為字元編碼,輸入一開始都是字元資料。 輸出檔案開啟 //第一種 ofstream outFile; outFile.open("my.txt"); //第二種 ofstream fout; char filename[5

c++ 列印簡單log資訊,輸出內容到某一檔案

#include<iostream> #include<sstream> #include<fstream> using

檔案輸入輸出 c++ 比較兩個文字內容

先看一個小程式: #include <fstream> #include <iostream> using namespace std; int main(){ ofstream op("text1.txt"); o

C++檔案輸入/輸出

你是不是曾經很想知道那背後真正執行了什麼操作?不管是或不是,我都將為你解釋。這是一個while型迴圈,它會一直反覆,直至程式的操作到達檔案的尾端。但這個迴圈如何知道是否已經到了檔案末尾?嗯,當你讀檔案的時候,會有一個類似於“內建指標(inside-pointer)”的東西,它表明你讀取(寫入也一樣)已經到了檔

freopen - C/C++檔案輸入輸出利器

freopen以前經常使用,比較方便,可以當作模板,在中間替換為自己的程式碼即可使用。 [cpp] view plain copy #incl

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

目錄 格式化輸出 檔案輸入輸出(File IO) 標頭檔案(Header Files) 格式化輸出 要格式化資料,我們可以使用轉義字串(Escape Sequence)也稱字元實體(Character Entity)。這些不需要任何額外的庫。 C ++ 轉義字串

C++檔案輸入輸出

ACM中巧用檔案的輸入輸出來改寫acm程式的輸入輸出 經常有見大神們使用檔案來代替ACM程式中的IO,尤其是當程式IO比較複雜時,可以使自己能夠更專注於程式碼的測試,而不是怎樣敲輸入。   /* *@Author: STZG *@Language: C++ */ #in

C/C++檔案輸入輸出(詳細介紹)

´在標頭檔案iostream中定義有兩個流類:輸入流類istream和輸出流類ostream,且用這兩個類定義了流物件cin和cout: ´Istream cin; ´ostream cout; ´cin是一個istream類的物件,它從標準輸入裝置(鍵盤)獲取資料

c++筆記(10) 檔案輸入輸出

c++ 定義了ifstream, ofstream, fstream類用於檔案處理和操作檔案,這些類定義在標頭檔案<fstream>中。 c++使用“流”來描述資料流動,資料流向程式,則為input stream(輸入流),反之為output stream輸出流

C Primer Plus (第五版)中文版——第 13 章 檔案輸入/輸出

13.1  和檔案進行通訊 13.1.1  檔案是什麼 一個檔案(file)通常就是磁碟上的一段命名的儲存區。C 將檔案看成是連續的位元組序列,其中沒一個位元組單獨地讀取。ANSI C 提供了檔案的兩種檢視:文字檢視、二進位制檢視。 13.1.2  文字檢視

vector,string,標準輸入輸出流,檔案輸入輸出流01(C++)

按要求編寫程式。 a) 定義一個結構體型別 Student,如下所示: struct Student { int ID; //學號 string name; //姓名 float score[3]; //三門課程成績 }; b) 編寫一個函式,按照上述結構體定義,依次從鍵盤輸

C++ 輸入輸出流和檔案輸入輸出

輸出到檔案 #include <iostream> #include <fstream> using namespace std; int i = 100; ofstream file("1.txt"); //檔案輸出物件,檔名

C++ Primer Plus學習筆記(四)(輸入輸出錯誤處理、檔案輸入輸出

1. 字元函式庫 cctype cctype是字元函式庫,用於判斷是否為大寫字母、標點符號、空格等 #include<cctype> char ch; isalpha(ch)//如果ch是字母,返回非零值,否則返回0 ispunct(ch)/

在map儲存struct,及map的檔案輸入輸出

用函式的方法實現: 從map輸出到檔案,map的value是struct #include<map> #include<iostream> #include<string> #include<fstream> using

C++檔案輸入輸出流+輸入輸出二進位制檔案(自定義物件)

檔案流類和檔案流物件檔案流是以外存檔案為輸入輸出物件的資料流。輸出檔案流   記憶體->外存輸入檔案流   外存->記憶體檔案流類流的名稱 流的作用 ifstream類 從istream類派生的,用來支援從磁碟檔案的輸入 ofstream類 從ostream