青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

不會飛的鳥

2010年12月10日 ... 不鳥他們!!! 我要用自己開發(fā)的分布式文件系統(tǒng)、分布式調(diào)度系統(tǒng)、分布式檢索系統(tǒng), 做自己的搜索引擎!!!大魚有大志!!! ---楊書童

如何使用 類進(jìn)行文件的 I/O 處理

原文出處:How to Use <fstream> Classes for File I/O
摘要:傳統(tǒng)的文件 I/O 庫如 Unix 的 <io.h> 和 <stdio.h> ,由于其程序接口的原因,在很大程度上強(qiáng)制程序員進(jìn)行某些處理,缺乏類型安全和國際化支持。C++ 的 <fstream> 庫則在文件的 I/O 方面提供了一個增強(qiáng)的、面向?qū)ο蟮摹⒕哂袊H化意識的庫。本文將介紹如何使用這個庫進(jìn)行文件的 I/O 處理并利用它來編寫易于跨平臺的代碼。


  大多數(shù) C++ 程序員都熟悉不止一個文件 I/O 庫。首先是傳統(tǒng)的 Unix 風(fēng)格的庫,它由一些低級函數(shù)如 read() 和 open()組成。其次是 ANSI C 的 <stdio.h> 庫,它包含 fopen() 和 fread()等函數(shù)。其它的還有一些具備所有權(quán)的庫或框架,比如 MFC,它有很多自己的文件處理類。
  這些庫一般都很難跨平臺使用。更糟的是,上述提到的 C 庫由于其程序接口的原因,在很大程度上強(qiáng)制程序員進(jìn)行某些處理,而且缺乏類型安全支持。
  標(biāo)準(zhǔn) C++ 提供提供了一個增強(qiáng)的、面向?qū)ο蟮摹⒕哂袊H化意識的  <fstream> 庫。這個庫包含一系列派生于標(biāo)準(zhǔn) ios_base 和 ios 類的類模板。因此, <fstream> 提供了高級的自動控制機(jī)制和健壯性。本文下面將示范如何使用  <fstream> 類實(shí)現(xiàn)文件的輸入/輸出處理:

第一步:創(chuàng)建文件流
  輸入文件流(ifstream)支持重載的 >> 操作符,同樣,輸出文件流(ofstream)支持重載的 << 操作符。結(jié)合了輸入和輸出的文件流被稱為 fstream。下面的程序創(chuàng)建了一個 ifstream 對象:dict,并將該對象中的每一個單字顯示到屏幕上:

#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>
using namespace std;
int main()
{
string s;
cout<<"enter dictionary file: ";
cin>>s;
ifstream dict (s.c_str());
if (!dictionary) // were there any errors on opening?
exit(-1);
while (dictionary >> s) cout << s <<''\n'';
}      
  我們必須調(diào)用 string::c_str() 成員函數(shù),因為 fstream 對象只接受常量字符串作為文件名。當(dāng)你將文件名作為參數(shù)傳遞時,構(gòu)造函數(shù)試圖打開指定的文件。接著,我們用重載的 !操作符來檢查文件的狀態(tài)。如果出錯,該操作符估值為 true。最后一行是個循環(huán),每次反復(fù)都從文件讀取一個單字,將它拷貝到 s,然后顯示出來。注意我們不必顯式地檢查 EOF,因為重載操作符 >> 會自動處理。此外,我們不用顯式地關(guān)閉此文件,因為析構(gòu)函數(shù)會為我們做這件事情。
  過時和荒廢的 <fstream.h> 庫支持 ios::nocreate 和 ios::noreplace 標(biāo)志。但新的 <fstream> 庫已經(jīng)取代了 <fstream.h> 并不再支持這兩個標(biāo)志。
 
文件的打開模式
  如果你不顯式指定打開模式,fstream 類將使用默認(rèn)值。例如,ifstream 默認(rèn)以讀方式打開某個文件并將文件指針置為文件的開始處。為了向某個文件寫入數(shù)據(jù),你需要創(chuàng)建一個 ofstream 對象。<fstream> 定義了下列打開模式和文件屬性:
ios::app // 從后面添加
ios::ate // 打開并找到文件尾
ios::binary // 二進(jìn)制模式 I/O (與文本模式相對)
ios::in // 只讀打開
ios::out // 寫打開
ios::trunc // 將文件截為 0 長度

你可以用位域操作符 OR 組合這些標(biāo)志:

ofstream logfile("login.dat", ios::binary | ios::app);

fstream 類型對象同時支持讀和寫操作:

fstream logfile("database.dat", ios::in | ios::out);

第二步:設(shè)置文件的位置
  文件具備一個邏輯指針,它指向該文件中的某個偏移位置。你可以通過調(diào)用seekp()成員函數(shù),以字節(jié)為單位將這個指針定位到文件的任意位置。為了獲取從文件開始處到當(dāng)前偏移的字節(jié)數(shù),調(diào)用seekp()即可。在下面的例子中,程序?qū)⑽募恢们耙?0個字節(jié),然后調(diào)用 tellp()報告新位置:

ofstream fout("parts.txt");
fout.seekp(10); // 從0偏移開始前進(jìn) 10 個字節(jié)
cout<<"new position: "<<fout.tellp(); // 顯示 10

你可以用下面的常量重新定位文ian指針:

ios::beg // 文件開始位置
ios::cur // 當(dāng)前位置,例如: ios::cur+5
ios::end // 文件尾

第三步:讀寫數(shù)據(jù)
  fstream 類為所有內(nèi)建數(shù)據(jù)類型以及 std::string 和 std::complex 類型重載 << 和 >> 操作符。下面的例子示范了這些操作符的使用方法:

fstream logfile("log.dat");
logfile<<time(0)<<"danny"<<''\n''; // 寫一條新記錄
logfile.seekp(ios::beg); // 位置重置
logfile>>login>>user; // 讀取以前寫入的值

posted on 2009-03-05 11:52 不會飛的鳥 閱讀(193) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            黄色工厂这里只有精品| 国产精品一区二区你懂得| 亚洲免费观看高清在线观看 | 日韩亚洲欧美高清| 亚洲人成7777| 91久久极品少妇xxxxⅹ软件| 久久资源在线| 亚洲欧美国产高清| 国产性做久久久久久| a4yy欧美一区二区三区| 亚洲免费观看高清在线观看| 久久se精品一区精品二区| 亚洲午夜久久久久久久久电影院| 欧美国产极速在线| 99国内精品| 亚洲欧美成人一区二区在线电影| 午夜亚洲福利| 久久国产一二区| 亚洲高清视频一区二区| 免费视频亚洲| 玖玖综合伊人| 亚洲美女福利视频网站| 午夜精品久久99蜜桃的功能介绍| 亚洲狼人精品一区二区三区| 亚洲激情在线视频| 亚洲精品色婷婷福利天堂| 亚洲在线一区| 小黄鸭视频精品导航| 欧美在现视频| 国产精品人人爽人人做我的可爱| 激情文学综合丁香| 91久久久久久久久久久久久| 一区二区三区四区五区在线| 一本久道久久久| 亚洲欧美国产精品va在线观看| 亚洲天堂av电影| 欧美在线观看一二区| 亚洲精品无人区| 亚洲伊人网站| 精品二区视频| 免费成人在线观看视频| 嫩草影视亚洲| 国产视频一区欧美| 91久久精品国产91性色tv| 亚洲一区在线播放| 另类图片国产| 久久超碰97中文字幕| 老司机精品视频网站| 欧美日韩在线播放三区| 欧美成人精品激情在线观看 | 国产精品狼人久久影院观看方式| 欧美精品国产一区二区| 国产免费成人| 一区二区av在线| 久久人91精品久久久久久不卡| 亚洲韩国日本中文字幕| 亚洲欧美日韩国产| 欧美精品麻豆| 国产精品稀缺呦系列在线| 国产精品制服诱惑| 日韩图片一区| 久久亚洲视频| 一区二区三区四区五区精品| 亚洲中字黄色| 久久综合九色欧美综合狠狠| 亚洲伦理在线观看| 久久综合九色九九| 亚洲国产成人久久综合| 免费高清在线一区| 国产乱码精品一区二区三| 亚洲视频在线一区观看| 亚洲乱码国产乱码精品精天堂| 久久久综合激的五月天| 亚洲欧美日本另类| 男女av一区三区二区色多| 亚洲国产另类 国产精品国产免费| 欧美一级视频精品观看| 免费成人黄色av| 免费在线观看一区二区| 亚洲第一精品在线| 性欧美xxxx大乳国产app| 亚洲欧美中文字幕| 国产欧美精品久久| 性做久久久久久| 欧美在线亚洲综合一区| 好吊色欧美一区二区三区四区| 性色av一区二区三区| 久久久久久尹人网香蕉| 亚洲国产精品成人一区二区| 久久精品国产精品亚洲综合| 欧美激情区在线播放| 艳妇臀荡乳欲伦亚洲一区| 亚洲在线视频观看| 韩国女主播一区二区三区| 老司机免费视频久久| 亚洲破处大片| 亚洲精品乱码久久久久久蜜桃91| 免费人成网站在线观看欧美高清| 久久精品卡一| 一本大道av伊人久久综合| 99精品欧美一区二区三区| 久久一区二区三区国产精品| 亚洲无限av看| 午夜免费电影一区在线观看| 欧美无砖砖区免费| 美国十次了思思久久精品导航| 久久天天躁狠狠躁夜夜爽蜜月| 欧美经典一区二区| 久久高清一区| 欧美黄色一区二区| 国产精品扒开腿爽爽爽视频| 久久夜色精品亚洲噜噜国产mv | 久久电影一区| 久久精品成人| 亚洲深夜激情| 久久国产毛片| 欧美一区二区三区视频| 久久久天天操| 欧美精品123区| 久久精品免费| 欧美日韩精品免费看| 久久精品久久综合| 亚洲自拍啪啪| 国产日韩精品在线播放| 亚洲国产精品久久久久秋霞蜜臀| 国产精品免费aⅴ片在线观看| 美日韩精品免费观看视频| 国产一区导航| 亚洲精品欧美极品| 精品成人在线视频| 久久精品免费播放| 性伦欧美刺激片在线观看| 午夜一区在线| 香蕉国产精品偷在线观看不卡| 久久在线视频在线| 99国产精品视频免费观看一公开| 久久久免费精品| 亚洲午夜免费视频| 欧美极品欧美精品欧美视频| 欧美激情第3页| 亚洲精品久久久久久久久久久久 | 欧美成人免费一级人片100| 国产一区二区你懂的| 欧美在线www| 久久久久久久久久码影片| 好吊视频一区二区三区四区 | 老司机免费视频久久| 韩国av一区二区三区在线观看| 小辣椒精品导航| 麻豆91精品91久久久的内涵| 在线观看日韩国产| 91久久精品www人人做人人爽 | 亚洲国产色一区| 国内精品久久久久久影视8| 一区二区激情小说| 欧美一区影院| 一区二区三区www| 欧美成人免费大片| 欧美激情一区二区三区全黄| 国产精品久久久久久模特| 欧美精品在线观看| 亚洲欧美在线网| 欧美黄色免费| 亚洲电影免费观看高清完整版在线 | 久久亚洲综合| 欧美亚洲系列| 欧美高清视频免费观看| 国外成人网址| 欧美视频一区二区三区…| 亚洲一区二区3| 欧美国产在线观看| 亚洲午夜一区| 91久久视频| 国产色综合网| 免费日本视频一区| 亚洲一区二区免费视频| 久久国产视频网| 男人的天堂亚洲| 性久久久久久| 一区二区三区视频在线 | 一区二区高清| 欧美在线观看一二区| 日韩一级黄色av| 尤物在线精品| 国产日韩欧美夫妻视频在线观看| 欧美日韩国产成人高清视频| 老司机午夜精品| 国产一区二区精品久久91| 欧美日韩国产页| 欧美中文在线免费| 亚洲视频一区二区在线观看| 蜜臀a∨国产成人精品| 午夜精品成人在线| 亚洲一区二区精品在线| 亚洲一区二区三区乱码aⅴ蜜桃女| 狠狠入ady亚洲精品| 国产亚洲精品bt天堂精选| 国产精品免费一区豆花| 国产精品热久久久久夜色精品三区| 欧美成年网站|