使用輸入輸出流迭代器讀取和寫入文件
目標1:使用istream_iterator讀取一個文件的內(nèi)容(為數(shù)字),使用ostream_iterator將奇數(shù)寫入第一個文件中,每個值之后都跟一個空格;將偶數(shù)寫入第二個文件中,每個值占一行。
#include#include#include#include#includeint?main()
{
????ifstream?infile("numbers.txt");//創(chuàng)建文件輸入流,指向numbers.txt,此文件需要首先保存在工程目錄下
????ofstream?outfile_1("jishu.txt");//創(chuàng)建文件輸出流1,指向jishu.txt
????ofstream?outfile_2("oushu.txt");//創(chuàng)建文件輸出流2,指向oushu.txt
????if(!infile|!outfile_1|!outfile_2)//檢查文件是否存在
????{
??????cout<<"file?does't?exist?!"<<endl;
??????return?-1;
????}
????istream_iteratorin_iter(infile),eof;//創(chuàng)建輸入流迭代器,指向infile,eof用于判斷文件末尾
????ostream_iteratorout_iter_1(outfile_1,"?");//創(chuàng)建輸出流迭代器,每個元素后跟空格
????ostream_iteratorout_iter_2(outfile_2,"n");//創(chuàng)建輸出流迭代器,每個元素后跟換行
????vectorvec(in_iter,eof);//將輸入流讀取的文件內(nèi)容復制到vec中
????for(auto?p=vec.begin();p!=vec.end();p++)
????{
??????if(*p%2==1)//數(shù)據(jù)為奇數(shù)
??????????copy(p,p+1,out_iter_1);
??????else//數(shù)據(jù)為偶數(shù)
??????????copy(p,p+1,out_iter_2);
????}
????system("pause");
???return?0;
}目標2:讀取一個文檔中單詞出現(xiàn)的次數(shù),要求使用關聯(lián)容器map.
#include#include#include#include#includeusing?namespace?std;
int?main()
{
??mapword_count;//創(chuàng)建關聯(lián)容器
??string?word;
??ifstream?ifile("words.txt");//打開文件
??if(!ifile)//對文件進行檢查
??{
?????cout<<"Can't?open?the?file!"<<endl;
?????exit(0);
??}
??istream_iteratoriter(ifile),eof;//創(chuàng)建輸入流迭代器,指向打開的文件
??auto?p=iter;
??while(p!=eof)//遍歷文件,對單詞進行計數(shù)
??{
??????word=*p++;
??????++word_count[word];
??}
??for(auto?w=word_count.begin();w!=word_count.end();w++)
??????cout<first<<"?occurs?"<second<second>1)?"?times":"?time")<<endl;//向屏幕輸出每個單詞出現(xiàn)的次數(shù)
??system("pause");
??return?0;
}測試時先要在工程目錄先新建words.txt文件
寫文件:
[cpp]?view plain?copy#include?





