国产gaysexchina男同gay,japanrcep老熟妇乱子伦视频,吃奶呻吟打开双腿做受动态图,成人色网站,国产av一区二区三区最新精品

C++ 文件輸入

2023-03-20 16:52 更新

為了從文件獲取數(shù)據(jù),必須創(chuàng)建一個(gè)從文件到程序的流對(duì)象。這點(diǎn)我們可以利用ifstream的構(gòu)造函數(shù)實(shí)現(xiàn):

ifstream infile ("file-name");

該構(gòu)造函數(shù)的參數(shù)是一個(gè)字符串,即你要打開(kāi)的文件的名字。其結(jié)果是創(chuàng)建了infile對(duì)象,它支持所有 cin上可以執(zhí)行的操作,包括>>和getline。

int x;
apstring line;
infile >> x; // 讀取一個(gè)整型數(shù)并保存到x中
getline (infile, line); // 讀取整行并保存到line中

如果我們提前知道文件中有多少數(shù)據(jù),那就可以直接寫一個(gè)循環(huán)來(lái)讀取整個(gè)文件,然后再停止。然而更常見(jiàn)的情況是,我們想讀取整個(gè)文件,但是不知道其大小。

ifstream有幾個(gè)用以檢查輸入流狀態(tài)的成員函數(shù),它們是good、eof、fail和bad等。我們使用good函數(shù)來(lái)確保文件成功打開(kāi),而使用eof函數(shù)來(lái)探測(cè)”文件尾“。

無(wú)論什么時(shí)候從輸入流讀取數(shù)據(jù),直到檢查時(shí)你才能知道嘗試是否成功。如果eof函數(shù)的返回值為true,那說(shuō)明已經(jīng)到達(dá)文件尾,我們就知道最后一次讀取嘗試以失敗告終。下面程序代碼的功能是:讀取一個(gè)文件的每一行并將其輸出到屏幕上。

apstring fileName = ...;
ifstream infile (fileName.c_str());

if (infile.good() == false) {
  cout << "Unable to open the file named " << fileName;
  exit (1);
}

while (true) {
  getline (infile, line);
  if (infile.eof()) break;
  cout << line << endl;
}

函數(shù)c_str把a(bǔ)pstring轉(zhuǎn)換為原生C字符串。因?yàn)閕fstream構(gòu)造函數(shù)期望的參數(shù)是C字符串,所以apstring必須轉(zhuǎn)換一下。

我們可以在打開(kāi)文件之后,立即調(diào)用good函數(shù)。如果系統(tǒng)無(wú)法打開(kāi)文件,該函數(shù)就返回false,原因很可能是文件不存在或者你沒(méi)有文件讀取權(quán)限。

while(true)是無(wú)窮循環(huán)的習(xí)慣寫法。通常循環(huán)中某處會(huì)有個(gè)break語(yǔ)句,這樣程序就不會(huì)真的永遠(yuǎn)運(yùn)行下去(不過(guò)有的程序的確是希望永遠(yuǎn)執(zhí)行)。這個(gè)例子中,break語(yǔ)句允許只要發(fā)現(xiàn)文件尾就退出循環(huán)。

退出循環(huán)操作放在輸入語(yǔ)句和輸出語(yǔ)句之間很重要,這樣getline在遇到文件尾失敗之后,我們就不會(huì)在line中輸出無(wú)效信息。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)