在C語言中打開和處理文件很複雜,並且一般用不上,以至於我看C++的時候直接忽略掉這部分。然而C++語言中的iostream庫提供了一種簡單的方法來處理文件。
打開文件進行讀寫操作,必須包含<fstream>,雖然<fstream>會自動包含<iostream>,但如果要使用cin、cout,最好還是現實包含<iostream>。
爲了讀而打開文件,要創建一個ifstream對象,它的用法與cin相同;爲了寫而打開文件,要創建ofstream對象,它的用法與cout相同。
<iostream>庫中有一個非常有用的函數getline().
函數原型:getline(istream &, string &, char del);
函數參數:第一個參數打開的流,第二個參數保存讀入的內容,第三個參數是字段分隔符,默認是'\n'。
函數功能:從輸入流讀入一行內容到string s。
函數返回false條件:讀入了文件結束標誌(沒有讀入字符)
eg1(每次讀入一行):逐行讀入特定文件(測試爲txt文件)並輸出。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
ifstream in("C://Users//Administrator//Desktop//a.txt");
string str;
while(getline(in,str)){
cout << str << endl;
}
return 0;
}
eg2(每次讀入一個單詞):從特定文件逐個讀入單詞並統計給定單詞出現的次數。
<span style="font-size:18px;">#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
ifstream in("C://Users//Administrator//Desktop//a.txt");
string str;
string findword = "the";
int num = 0;
while(in >>str){
if(str == findword)
++num;
}
cout << num << endl;
return 0;
}</span>
eg3:一次顯示文件的一行,然後等待用戶按回車鍵以後顯示下一行。
<span style="font-size:18px;">#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
ifstream in("C://Users//Administrator//Desktop//a.txt");
string str;
string word;
while(getline(in,str)&&(cin.get() =='\n')){
cout << str <<endl;
}
return 0;
}</span>
很多時候都希望輸入回車來結束輸入,C語言可以用:
if(getchar() == '\n')
C++語言可以用cin.get()來獲取流中的字符,然後判斷是否爲回車符:
while(cin.get() ==‘\n’)
如果不是將字符放入流中:
cin.unget()