最近開始看C++了,以前在大一寒假時,本來就准備開始學C++的(大一上學期開了C++的課,很是喜歡),結果我姐一句"C++過時了,學Java吧"這樣的話,誤導了我,導致我大學從大一下學期開始一直到現在工作,主要都是使用的Java語言。實在令我汗顏,不過現在也決定邊學習邊寫寫博客。
1.C++文本寫入
主要使用了處理輸出的ofstream類,包含在fstream頭文件中。
#include<iostream> #include<fstream> using namespace std; void writeFile(){ ofstream outFile; outFile.open("test.txt"); cout<<"Please input your name:"; char input[10]; cin >> input; int age; cout<<"Please input your age:"; cin >> age; double money; cout.setf(ios::fixed); cout.precision(6); cout<<"Please inpu your money:"; cin >> money; double other = money * 0.925; cout <<"Money:" << other << endl; outFile << input << endl; //寫入姓名 outFile << age << endl; //寫入年齡 outFile << other << endl; //寫入金錢 outFile.close(); } int main(){ writeFile(); return 0; }上面是很簡單的一段寫入文件的代碼。
首先創建一個輸出類ofstream outFile;
打開一個文件outFile.open("test.txt");
然后是一些簡單的輸入信息。
cout.setf(ios::fixed)的意思是設置為定點輸出格式。
cout.precision(6)的意思是將精度設為6位。
這里主要是學習一下指定精度的浮點輸出。
另外 ofstream 可以和 cout一樣的使用<<。 只不過ofstream是文件中輸出數據,而cout是向控制台輸出數據。
最后使用outFile.close()進行關閉。如果忘記關閉的話,也會在程序終止后自動關閉它。
2.C++文本讀取
主要使用了處理輸出的ifstream類,包含在fstream頭文件中。
#include<iostream> #include<fstream> using namespace std; void readFile(){ ifstream inFile; inFile.open("test.txt"); if(inFile.is_open()){ char input[10]; inFile >> input; int age; inFile >> age; double money; inFile >> money; cout << "ReadFile Complete" << endl; cout << "Name:" << input << endl; cout << "Age:" << age << endl; cout << "Money:" << money << endl; } } int main(){ readFile(); return 0; }
同樣的,讀取文件使用ifstream類。
不過進行讀取文件時,最后進行判斷文件是否被打開,因為如果文件未被成功打開,將會在讀取時出錯。
這里采用inFile.is_open()進行判斷。
如同ofstream一樣,ifstream可以和cin一樣使用 >> 。只不過前者用於向文件中讀取數據,后者用於讀取控制台的輸入。
當然,也可以采用讀取整行的方法。
例如: char line[81];
inFile.getline(line, 80);
如果是循環進行文件讀取,則需要判斷文件是否到達文件尾。
可以采用if(inFile.eof()){} 來判斷是否到達EOF,然后采用else if(inFile.fail())用於檢查EOF和類型不匹配。用於判斷讀取循環終止的原因,以進行其他的操作。
將兩部分代碼合運行效果如圖所示:
PS:C++簡易的文件讀寫就到這里了。本人畢業不久,經驗有限,希望大家指出錯誤,一起進步。
另外,最近下班回家的晚上也開始使用JavaFX Scene Builder了,應該在最近就會寫相關的博文。