C++ 關於文件讀取和輸入的問題


主要針對於機試中的IO讀寫問題,c語言實現和使用太過於繁瑣,所以以后遇到類似題目還是用C++的;

 

主要包含頭文件

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

 

 

一般來說,用fstream就足夠夠用了,他包含了istream和ostream的有點,可以直接對一個流同時進行讀寫;

fstream的創建和初始化如下所示:

fstream fin;
fin.open("C:\\Users\\Reality\\Desktop\\iotest\\testcpp.txt", ios::in);

 

注意一下,win系統下所有的格式采用“//”來對路徑分隔符就行轉義,最好使用絕對路徑,方便;

 

使用open(path,ios::)進行初始化,第一個參數使打開文件的完整路徑,第二個參數則是打開文件的詳細方式;

具體的ios::打開類型如下所示:

 

 簡便來說:

fstream讀取用ios::in,輸出用ios::out,如果在已有文件后進行輸出則用ios::app。但是一定一定要注意,這些是針對於文本文件;

當針對於二進制文件的時候,打開文件則使用ios::binary。

 

這里再補充一下二進制文件和文本文件的問題:

兩個在內存中的表現形式和在外存上的存儲形式不一樣。

盡管文件都是01二進制流構成的,但是二進制文件使可以執行的機器文件,內容就是二進制數字;

而文本文件則還需要進行ASCII碼翻譯過程,才能翻譯成完整的文本文件。cpp/txt/html都是文本類型文件,如果使用IOS::binary進行二進制打開,則必讀取失敗。注意.o和.cpp文件的區別;


當使用fin.open后,最好進行是否打開文件成功的判斷。

if (!fin) {
    cout << "Open Failure" << endl;
    return 0;
}

 

直接對fin進行判斷即可,當然也可以使用!fin.good()進行判斷;

 

在讀取和寫入文件時,和cin、cout輸入輸出流類似,直接輸入輸出;

 

值得注意的是讀入操作:

和cin的讀入操作類似,當cin>>s時,s的類型也可以為字符串也可以為數值類型,且都是空格或者換行結尾;

當想讀入整行字符串的時候,用getline(fin,s)即可,后續就是字符串的相關處理,又是老生常談的問題;

 

還有,一定要記住在使用完文件進行關閉操作;

fin.close();

 

來進行文件的關閉,以免出錯或者打開文件再次有問題;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM