C++中簡單的文本文件輸入/輸出示例詳解
為了便于理解,我們把cout 用于控制臺輸出時(shí)的一些情況和寫入到文本文件的情況進(jìn)行類比:
cout 控制臺輸出
包含頭文件 iostream
頭文件 iostream 定義了一個(gè) ostream 類用于處理輸出
頭文件 iostream 聲明了一個(gè)名為 cout 的 ostream 對象
指明名稱空間 std
可以結(jié)合使用cout和運(yùn)算符<<來顯示各種類型的數(shù)據(jù)
文本文件輸出(寫入到文本文件)
包含文件頭 fstream
頭文件 fstream 定義了一個(gè)ofstream 類用于處理輸出
聲明一個(gè)或多個(gè) ofstream 對象,可以自由命名
指明名稱空間 std
把 3 中聲明的 ofstream 對象與文件關(guān)聯(lián)起來,比如使用 open()方法
使用完文件后,需要使用 close()方法將其關(guān)閉
還可以結(jié)合 ofstream 對象和運(yùn)算符<<來輸出各種類型的數(shù)據(jù)
注意:cout 控制臺輸入輸出中,頭文件 iostream 聲明了一個(gè)名為 cout 的 ostream 對象,無需自己手動聲明;文件輸出中,我們必須自己動手聲明一個(gè) ofstream 對象,為其命名,將其同文件關(guān)聯(lián)起來。請看下面的例子:
#include<fstream>
ofstream OutFile; //聲明一個(gè) ofstream 對象
OutFile.open("study.txt"); //將OF與“study.txt”文件關(guān)聯(lián)起來
下面請看一個(gè)完整的程序,用戶輸入信息,將信息顯示到屏幕上,再將這些信息寫入到文本文件中:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
char name[20];
double height;
double weight;
ofstream outFile;//創(chuàng)建了一個(gè)ofstream 對象
outFile.open("information.txt");//outFile 與一個(gè)文本文件關(guān)聯(lián)
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; //小數(shù)點(diǎn)格式顯示double
outFile.precision(2); //設(shè)置精度
outFile.setf(ios_base::showpoint); //強(qiáng)制顯示小數(shù)點(diǎn)后的零
outFile<<"Name: "<<name<<endl;
outFile<<"Height: "<<height<<endl;
outFile<<"Weight: "<<weight<<endl;
outFile.close(); //使用完文本文件后要用close()方法將其關(guān)閉
return 0;
}
接下來,我們再把cin 用于控制臺輸入時(shí)的一些情況和讀取文本文件的情況進(jìn)行類比:
cin 控制臺輸出
包含頭文件 iostream
頭文件 iostream 定義了一個(gè) istream 類用于處理輸出
頭文件 iostream 聲明了一個(gè)名為 cin 的 istream 對象
指明名稱空間 std
可以結(jié)合使用cin和運(yùn)算符>>來輸入各種類型的數(shù)據(jù)
文本文件輸入(讀取文本文件)
包含文件頭 fstream
頭文件 fstream 定義了一個(gè)ifstream 類用于處理輸出
聲明一個(gè)或多個(gè) ifstream 對象,可以自由命名
指明名稱空間 std
把 3 中聲明的 ifstream 對象與文件關(guān)聯(lián)起來,比如使用 open()方法
使用完文件后,需要使用 close()方法將其關(guān)閉
還可以結(jié)合 ifstream 對象和運(yùn)算符>>來讀取各種類型的數(shù)據(jù)
可以用 cin 和 get() 方法來讀取一個(gè)字符,或用 cin 和 getline() 方法來讀取一行字符
可以結(jié)合使用 ifstream 和 eof()、fail()方法來判斷輸入是否成功
如果試圖打開一個(gè)不存在的文件用于輸入將會導(dǎo)致后面使用 ifstream 對象讀取數(shù)據(jù)時(shí)發(fā)生錯(cuò)誤,因此用戶需要使用 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) 用于終止程序。
下面請看一個(gè)完整的程序,用戶打開指定的文本文件,讀取文件中的 double 類型數(shù)據(jù),并在控制臺輸出所讀取數(shù)據(jù)的數(shù)目、總和以及平均數(shù):
#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;
}
總結(jié)
到此這篇關(guān)于C++中簡單的文本文件輸入/輸出的文章就介紹到這了,更多相關(guān)C++文本文件輸入/輸出內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言?八大排序算法的過程圖解及實(shí)現(xiàn)代碼
排序是數(shù)據(jù)結(jié)構(gòu)中很重要的一章,本文主要為大家介紹了常用的八個(gè)排序算法(插入,希爾,選擇,堆排,冒泡,快排,歸并,計(jì)數(shù))的過程及代碼實(shí)現(xiàn),需要的朋友可以參考一下2021-12-12
C語言中feof函數(shù)和ferror函數(shù)示例詳解
在C語言中feof函數(shù)用于檢查文件流的結(jié)束標(biāo)志,判斷文件在讀取時(shí)是否已經(jīng)到達(dá)了文件的末尾,這篇文章主要給大家介紹了關(guān)于C語言中feof函數(shù)和ferror函數(shù)的相關(guān)資料,需要的朋友可以參考下2024-09-09

