學(xué)習(xí)C有段時(shí)間了,但是C++剛開始學(xué),在看到文件操作時(shí)遇到了讀取文本文件中帶空格的字符串的問題。現(xiàn)總結(jié)如下:ifstream類定義的對象用法與cin非常相似,連類中的方法都很相似,假設(shè)定義 ifstream inFile;比如:cin>>ch與inFile>>ch;cin.get()與inFile.get()以及cin.getline()與inFile.getline()的用法基本相同,最重要的是讀取一行string類字符串的函數(shù)getline(),用法為:getline(cin,str); 只要將其修改為getline(inFile,str);即可實(shí)現(xiàn)讀取文本文件中帶空格的字符串。
TXT文件內(nèi)容如下:
4Sam Stone2000Freida Flass100500Tammy Tubbs5000Rich Raptor55000示例代碼如下:(下面程序包含混合輸入數(shù)字與字符串)
#include<iostream>#include<fstream> #include<cstdlib> //support for exit()#include<string>#include<cstring>using namespace std;struct donators{ string donatorname; double amount;};const int Size = 30;int main(){ //定義文件輸入類,并與文件建立連接 ifstream inFile; char filename[Size]; cout<<"Please enter the name of file: "; cin>>filename; inFile.open(filename); if(!inFile.is_open()) { cout<<"Can not open the file./n"; cout<<"PRogram terminating./n"; exit(EXIT_FAILURE); } //開始讀取文件數(shù)據(jù) int number; inFile>>number; inFile.get(); donators *p = new donators[number]; for(int i=0;i<number && inFile.good();i++) { getline(inFile,p[i].donatorname); //ifstream定義的對象與cin用法幾乎一致 inFile>>p[i].amount; inFile.get(); } //判斷文件讀取結(jié)束原因 if (inFile.eof()) //文件尾標(biāo)志 cout<<"End of file reached./n"; else if(inFile.fail()) //數(shù)據(jù)不匹配錯(cuò)誤 cout<<"Input terminated by data mismatch./n"; else cout<<"Input terminated for unknow reason./n"; inFile.close(); //輸出重要捐獻(xiàn)者 int flag1 = 0; cout<<"Grand Patrons:/n"; for(int i=0;i<number;i++) { if(p[i].amount>10000) { cout<<p[i].donatorname<<"/t"<<p[i].amount<<endl; flag1++; } } if (flag1<=0) cout<<"none./n"; //此種類別沒有捐獻(xiàn)者 //輸出普通捐獻(xiàn)者 flag1 = 0; cout<<"Patrons:/n"; for(int i=0;i<number;i++) { if(p[i].amount<=10000) { cout<<p[i].donatorname<<"/t"<<p[i].amount<<endl; flag1++; } } if (flag1<=0) cout<<"none./n"; return 0;}OVER!
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注