第8講 基于C 流類庫的文件輸入輸出_第1頁
第8講 基于C 流類庫的文件輸入輸出_第2頁
第8講 基于C 流類庫的文件輸入輸出_第3頁
第8講 基于C 流類庫的文件輸入輸出_第4頁
第8講 基于C 流類庫的文件輸入輸出_第5頁
已閱讀5頁,還剩67頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第7講基于C++流類庫的文件輸入輸出2本講主要內(nèi)容C++的輸入輸出系統(tǒng)基于C++流類庫的文本文件的讀寫基于C++流類庫的二進制文件的讀寫C++程序的結構(略)3C++的輸入輸出系統(tǒng)4面向對象的輸入輸出系統(tǒng)C++完全支持C語言的輸入輸出系統(tǒng),并且還定義了一套面向對象的輸入輸出系統(tǒng)。C++提供的用于輸入輸出的類體系可以:進行系統(tǒng)預定義類型的輸入輸出;進行程序員自定義類型的輸入輸出。

C++的I/O流類,是最常用的I/O系統(tǒng)。5C++的流及流類庫1.什么是C++的流(stream)?

#include<iostream.h>voidmain(){chars[10];

cin>>s;cout<<s[0];}

輸入輸出是一種數(shù)據(jù)操作,它可以看作字符序列在主機和外部介質之間的流動,C++中把這種數(shù)據(jù)的流動抽象為流,它負責在數(shù)據(jù)的生產(chǎn)者和數(shù)據(jù)的消費者之間建立聯(lián)系,并管理數(shù)據(jù)的流動。流可以表示數(shù)據(jù)從內(nèi)存到某個載體或設備中,即輸出流流可以表示從某個載體或設備到內(nèi)存緩沖區(qū)變量中,即輸入流6流類和流的對象廣義上講與數(shù)據(jù)傳送有關的事務叫做流,例如可把文件和變量叫做流;流可代表要傳送的數(shù)據(jù)的結構、屬性和行為特性,用一個名字表示,叫做流類;而用流代表輸入設備和輸出設備,叫做流的對象。72.流的提取和插入使用特定的操作從流中獲取數(shù)據(jù)或向流中添加數(shù)據(jù):從流中獲取數(shù)據(jù)稱為提取操作(在C++中用提取符>>實現(xiàn),即輸入)向流中添加數(shù)據(jù)稱為插入操作(在C++中用插入符<<實現(xiàn),即輸出)83.C++的流類庫將完成輸入/輸出操作的類稱為流類,由流類組成了流類庫,C++流類庫是用繼承方法組織起來的一個輸入輸出類庫。ios類用來提供一些關于對流狀態(tài)進行設置的功能,ios類及其派生類為用戶提供使用流類的接口;streambuf類是為ios類及其派生類提供對數(shù)據(jù)的緩沖支持。9流類庫的基本結構iosstreambufistreamostreamiostreamios是個虛基類。提供流的格式化輸入/輸出操作成員函數(shù)和錯誤處理成員函數(shù)。istream提供流的輸入操作(提取操作)的成員函數(shù)。ostream提供流的輸出操作(插入操作)的成員函數(shù)。iostream支持對同一個流同時進行輸入/輸出操作(提取操作和插入操作)。streambuf管理流的緩沖區(qū)。10支持文件的流類iosstreambufistreamostreamiostreamfstreambase

filebuf

ifstream

ofstream

fstream

fstreambase文件流的共同基類,定義了流與文件的連接,文件操作中不使用這個類;ifstream用于讀文件(對文件進行提取操作)ofstream用于寫文件(對文件進行插入操作)fstream用于文件的讀/寫操作(對文件進行提取操作和文件進行插入操作);filebuf管理文件操作的緩沖區(qū),用來作上述類的緩沖支持;11頭文件所有使用文件流類庫的程序必須有:#include<fstream.h>

12支持預定義的流類iosstreambufistreamostreamiostreamistream_withassign

ostream_withassign

iostream_withassignwithassign定義了流與設備相關聯(lián)的操作istream_withassign支持預定義輸入操作ostream_withassign支持預定義輸出操作iostream_withassign支持預定義輸入/輸出操作13_withassign類的對象常用的標準輸入輸出流cin、cout、cerr、clog是在iostream.h中說明的_withassign類的對象:istream_withassigncin;//與標準輸入設備相關聯(lián)ostream_withassigncout;//與標準輸出設備相關聯(lián)ostream_withassigncerr;//與標準錯誤輸出設備相關聯(lián)(提供不帶緩沖區(qū)的輸出)ostream_withassignclog;//與標準錯誤輸出設備相關聯(lián)(提供帶緩沖區(qū)的輸出)

144.I/O流在C++中所起的作用操作系統(tǒng)將鍵盤、屏幕、打印機和通訊接口作為擴充文件來處理的;I/O流類就是用來與這些擴充文件進行交互的,實現(xiàn)數(shù)據(jù)的輸入和輸出。15基于C++流類庫的文本文件的讀寫16【例6-1】文本文件的讀寫。為案例程序增加文件保存功能。將“學生”對象的數(shù)據(jù)保存到文件中?!痉治觥堪咐绦蚨x的各種類對象存在于內(nèi)存中,需要使用C++輸入輸出類庫提供的相關函數(shù),將內(nèi)存數(shù)據(jù)永久保存到文件中,再將文件中的數(shù)據(jù)讀入到內(nèi)存中的相應對象中。文件的操作過程為:打開文件讀寫文件關閉文件17【程序編寫】讀寫學生對象的數(shù)據(jù),需要為CStudent類添加相應的讀寫成員函數(shù)。按照案例程序的類層次關系和各種屬性數(shù)據(jù)所在的類層次,讀寫成員函數(shù)應該添加到CStudent類的基類CPerson類中,之后繼承到CStudent類中。在Person.h文件中添加成員函數(shù)聲明://數(shù)據(jù)寫入文件virtualvoidWriteFile(ofstream&fs);//從文件中讀取數(shù)據(jù)virtualvoidReadFile(ifstream&fs);在Person.cpp文件中添加成員函數(shù)定義:voidCPerson::WriteFile(ofstream&fs)//數(shù)據(jù)寫入文件{

fs<<m_strName<<'\n'<<m_strID<<''<<m_cSex<<''<<m_Birthday.GetYear()<< ''<<m_Birthday.GetMonth()<<''<<m_Birthday.GetDay()<<'';}輸出文件流類輸入文件流類利用插入運算符<<將屬性信息寫到輸出文件流fs中voidCPerson::ReadFile(ifstream&fs)//從文件中讀取數(shù)據(jù){ intnYear,nMonth,nDay; charstrName[256],strID[12];

fs.getline(strName,256); //從輸入文件流fs中讀取1行信息

//利用提取運算符從輸入文件流fs中讀取信息

fs>>strID>>m_cSex>>nYear>>nMonth>>nDay;

delete[]m_strName; m_strName=newchar[strlen(strName)+1]; strcpy(m_strName,strName);

delete[]m_strID; m_strID=newchar[strlen(strID)+1]; strcpy(m_strID,strID); CDateBirthday(nYear,nMonth,nDay); m_Birthday=Birthday;}從輸入文件流fs中讀取1行信息;getline是fs對象的成員函數(shù)利用提取運算符從輸入文件流fs中讀取信息在Student.h文件中添加成員函數(shù)聲明://數(shù)據(jù)寫入文件voidWriteFile(ofstream&fs);//從文件中讀取數(shù)據(jù)voidReadFile(ifstream&fs);在Student.cpp文件中添加成員函數(shù)定義:voidCStudent::WriteFile(ofstream&fs){ //利用插入運算符將學生屬性信息寫到輸出文件流fs中

CPerson::WriteFile(fs); fs<<m_strMajor<<endl;}重新定義從父類那里繼承下來的成員函數(shù)利用插入運算符<<將學生屬性信息寫到輸出文件流fs中調(diào)用“父類版本”的成員函數(shù)voidCStudent::ReadFile(ifstream&fs){ charstrMajor[256];

CPerson::ReadFile(fs);

fs.getline(strMajor,256);//從輸入文件流fs中讀取1行信息

delete[]m_strMajor; m_strMajor=newchar[strlen(strMajor)+1]; strcpy(m_strMajor,strMajor);

}調(diào)用“父類版本”的成員函數(shù)22main()函數(shù)【讀寫步驟】1.定義3個學生對象Student1、Student2和Student3;2.打開文件,將這些學生對象的信息以文本數(shù)據(jù)的形式寫入文本文件StudentInfo.txt;關閉文件。3.再次打開文件,讀取StudentInfo.txt文件,將文件中的數(shù)據(jù)讀入到內(nèi)存,存放到3個學生對象Student1_1、Student2_1和Student3_1中,輸出3個學生對象Student1_1、Student2_1和Student3_1的數(shù)據(jù)。關閉文件。intmain(){ CStudentStudent1("李江","50200900825",'0',1991,3,7,"計算機科學與技術"); CStudentStudent2("趙梅","50200900826",'1',1991,6,8,"計算機科學與技術"); CStudentStudent3("武峰","50200900827",'0',1990,5,6,"計算機科學與技術");

ofstreamfout("StudentInfo.txt");

if(fout.fail())

{ cout<<"Openfilefailture!"<<endl; return1; }

Student1.WriteFile(fout); Student2.WriteFile(fout); Student3.WriteFile(fout);

fout.close();

定義輸出文件流對象fout并通過它打開或創(chuàng)建文件StudentInfo.txt如果文件打開或創(chuàng)建失敗,則退出將學生的信息寫到輸出文件流對象fout中關閉文件

ifstreamfin("StudentInfo.txt");

if(fin.fail()) { cout<<"Openfilefailture!"<<endl; return1; } CStudentStudent1_1,Student2_1,Student3_1;

Student1_1.ReadFile(fin); Student2_1.ReadFile(fin); Student3_1.ReadFile(fin);

fin.close(); Student1_1.DisplayInfo(); Student2_1.DisplayInfo(); Student3_1.DisplayInfo(); return0;}定義輸入文件流對象fin并通過它打開文件StudentInfo.txt關閉文件輸出學生信息如果文件打開失敗,則退出將輸入流文件對象fin中的數(shù)據(jù)讀到學生對象中25程序的運行結果如下。如果用記事本程序打開文本文件“StudentInfo.txt”,就會看到下圖所示的內(nèi)容。261.C++的文件流類C++提供了3個用于文件輸入輸出的文件流類,如下所示。 ①ifstream:輸入文件流類,用于文件的輸入。 ②ofstream:輸出文件流類,用于文件的輸出。 ③fstream:輸入/輸出文件流類,用于文件的輸入/輸出。 在使用這些文件流類時,通常要在程序中包含頭文件fstream:

#include<fstream>27在利用文件流類進行文件操作時,首先要建立流類的對象。例如:

ifstreamfin; ofstreamfout; fstreamfin_out;2.文件流類對象的定義28(1)可以通過流類對象的構造函數(shù)打開文件。例如:

ofstreamfout("StudentInfo.txt");該語句定義了輸出文件流類的對象fout,并通過其構造函數(shù)打開文件StudentInfo.txt。再如:

ifstreamfin("StudentInfo.txt");該語句定義了輸入文件流類的對象fin,并通過其構造函數(shù)打開文件StudentInfo.txt。3.打開文件的方法29(2)可以通過文件流對象的成員函數(shù)open打開文件調(diào)用該函數(shù)的一般形式為:

文件流對象.open(文件名,打開方式);其中,“文件名”可以包括路徑(如 “D:\\data\\StudentInfo.txt”),如果不指明路徑,則默認為當前目錄下的文件?!按蜷_方式”決定如何打開文件,如表6-1所示。3.打開文件的方法30表6-1文件的打開方式方式功能ios::app打開一個輸出文件,以將數(shù)據(jù)添加到文件的尾部ios:ate打開一個已存文件,并將文件指針移到文件的尾部ios:binary以二進制的形式打開文件,默認值為文本文件形式ios::in打開一個文件,進行文件輸入操作ios::out打開一個文件,進行文件輸出操作ios::trunc打開一個文件,如果該文件已存在,則清除文件的內(nèi)容,文件的長度變?yōu)榱恪?1如果用ifstream類來定義一個流對象,則隱含為輸入流,不必再添加ios::in說明;如果用ofstream類來定義一個流對象,則隱含為輸出流,不必再添加ios::out說明。例如:

ifstreamin; in.open("test.dat");//等同于in.open("test.dat",ios::in);

ifstreamout; out.open("test.dat");//等同于out.open("test.dat",ios::out)32如果文件打開時需要多種打開方式的組合,則應使用“|”(位或操作符)將幾種打開方式組合在一起。例如,可采用以下方式打開一個能夠進行輸入和輸出的二進制文件。

fstreamfin_out; fin_out.open("test.dat",ios::in|ios::out|ios::binary);當指定“ios::out”方式后,隱含為“ios::trunc”方式,即如果打開的輸出文件已存在,則自動清空該文件的內(nèi)容。33“打開文件”的常規(guī)寫法在進行文件打開操作時,應該判斷文件打開是否成功,其常規(guī)寫法如下。

if(fout.fail()) cout<<"Openfilefailture!"<<endl;fail函數(shù)是ios類(ios類是fstream、ifstream、ofstream的祖先類)的成員函數(shù)。在這里,當返回值為true時,說明“文件打開”出現(xiàn)錯誤。344.文本文件的讀寫前面的程序中,從文件流讀取數(shù)據(jù)時用到了getline函數(shù):

fs.getline(strName,256);函數(shù)getline的原型是:

getline(char*_Str,int_Count)該函數(shù)的功能是:從文件流中讀取_Count個字節(jié)到_Str所指的內(nèi)存中,如果還沒有讀取_Count個字節(jié)就遇到回車符'\n',則讀取過程中止。355.文件的關閉讀寫文件的操作完成后,應關閉文件。通過關閉操作,文件流對象與相應的物理文件進行了脫離。如果不進行文件的關閉,則可能造成文件數(shù)據(jù)的丟失。關閉文件可使用流類的成員函數(shù)close完成,例如:fout.close();fin.close();36課程案例設計與編碼(課堂練習1)37課堂練習:文本文件的保存繼續(xù)為案例程序增加文件保存功能。將“本科生”對象和“研究生”對象的數(shù)據(jù)分別保存到其各自的文件中。要求:案例程序中已經(jīng)完成了CPerson類、CStudent類的數(shù)據(jù)的保存功能,請同學們添加CUndergraduate類和CGraStudent類的數(shù)據(jù)保存功能。并在main()函數(shù)中定義相應的類對象,將其數(shù)據(jù)寫入文件,并讀出和顯示。38基于C++流類庫的二進制文件的讀寫39二進制文件的讀寫如果需要讀寫二進制文件,則在打開文件時要使用“ios::binary”來指定以二進制的形式進行文件流的操作。讀寫二進制文件可使用get()、put()函數(shù)或read()、write()函數(shù)。下面使用read()、write()函數(shù)改寫例6-1,實現(xiàn)二進制文件的讀寫,之后介紹get()、put()函數(shù)的使用方法。40使用write()和read()函數(shù)讀寫二進制文件【例6-2】

二進制文件的讀寫。在例6-1的代碼基礎上修改程序,將學生信息寫入二進制文件,再從二進制文件中讀出學生信息并進行顯示。修改CPerson類和CStudent類的成員函數(shù)WriteFile()和ReadFile()。將Person.cpp文件中的成員函數(shù)WriteFile()重新定義為:voidCPerson::WriteFile(ofstream&fs){

unsignedcharucStrLength; ucStrLength=strlen(m_strName)+1; fs.write((char*)&ucStrLength,sizeof(ucStrLength)); fs.write(m_strName,ucStrLength);

ucStrLength=strlen(m_strID)+1; fs.write((char*)&ucStrLength,sizeof(ucStrLength)); fs.write(m_strID,ucStrLength);

fs.write(&m_cSex,sizeof(m_cSex));

fs.write((char*)&m_Birthday,sizeof(m_Birthday));}寫入姓名字符串的長度(包括字符串結束符’\0’)寫入姓名字符串寫入編號字符串的長度寫入編號字符串寫入性別字符寫入出生日期將Person.cpp文件中的成員函數(shù)ReadFile()重新定義為:voidCPerson::ReadFile(ifstream&fs)//從文件中讀取數(shù)據(jù){

unsignedcharucStrLength; fs.read((char*)&ucStrLength,sizeof(ucStrLength)); delete[]m_strName; m_strName=newchar[ucStrLength]; fs.read(m_strName,ucStrLength);

fs.read((char*)&ucStrLength,sizeof(ucStrLength)); delete[]m_strID; m_strID=newchar[ucStrLength]; fs.read(m_strID,ucStrLength);

fs.read(&m_cSex,sizeof(m_cSex));

fs.read((char*)&m_Birthday,sizeof(m_Birthday));}讀入姓名字符串的長度讀入姓名字符串讀入編號字符串的長度讀入編號字符串讀入出生日期讀入性別字符將Student.cpp文件中的成員函數(shù)WriteFile()重新定義為:voidCStudent::WriteFile(ofstream&fs){ unsignedcharucStrLength;

CPerson::WriteFile(fs); ucStrLength=strlen(m_strMajor)+1;

fs.write((char*)&ucStrLength,sizeof(ucStrLength)); fs.write(m_strMajor,ucStrLength);}調(diào)用“父類版本”的成員函數(shù)寫入專業(yè)字符串的長度寫入專業(yè)字符串將Student.cpp文件中的成員函數(shù)ReadFile()重新定義為:

voidCStudent::ReadFile(ifstream&fs){ unsignedcharucStrLength;

CPerson::ReadFile(fs);

fs.read((char*)&ucStrLength,sizeof(ucStrLength));

delete[]m_strMajor; m_strMajor=newchar[ucStrLength]; fs.read(m_strMajor,ucStrLength);

}調(diào)用“父類版本”的成員函數(shù)讀入專業(yè)字符串的長度讀入專業(yè)字符串intmain(){ CStudentStudent1("李江","50200900825",'0',1991,3,7,"計算機科學與技術"); CStudentStudent2("趙梅","50200900826",'1',1991,6,8,"計算機科學與技術"); CStudentStudent3("武峰","50200900827",'0',1990,5,6,"計算機科學與技術");

ofstreamfout("StudentInfo.dat",ios::binary);

if(fout.fail()) { cout<<"Openfilefailture!"<<endl; return1; }

Student1.WriteFile(fout); Student2.WriteFile(fout); Student3.WriteFile(fout);

fout.close();定義輸出文件流對象fout并通過它打開或創(chuàng)建文件StudentInfo.dat如果文件打開或創(chuàng)建失敗,則退出將學生的信息寫到輸出文件流對象fout中關閉文件

ifstreamfin("StudentInfo.dat",ios::binary);

if(fin.fail()) { cout<<"Openfilefailture!"<<endl; return1; } CStudentStudent1_1,Student2_1,Student3_1;

Student1_1.ReadFile(fin); Student2_1.ReadFile(fin); Student3_1.ReadFile(fin);

fin.close(); Student1_1.DisplayStatus(); Student2_1.DisplayStatus(); Student3_1.DisplayStatus(); return0;}定義輸入文件流對象fin并通過它打開文件StudentInfo.dat如果文件打開失敗,則退出將輸入流文件對象fin中的數(shù)據(jù)讀到學生對象中關閉文件輸出學生信息程序的運行結果如下:姓名:李江編號:50200900825性別:男出生日期:1991,3,7專業(yè):計算機科學與技術姓名:趙梅編號:50200900826性別:女出生日期:1991,6,8專業(yè):計算機科學與技術姓名:武峰編號:50200900827性別:男出生日期:1990,5,6專業(yè):計算機科學與技術如果用記事本程序打開二進制文件“StudentInfo.dat”,就會看到下圖所示的內(nèi)容:48說明(1)在進行二進制文件的讀寫之前,首先要以二進制的形式打開文件,見下面的語句。ofstreamfout("StudentInfo.dat",ios::binary);ifstreamfin("StudentInfo.dat",ios::binary);(2)write是ostream類的成員函數(shù),其函數(shù)形式如下:write(constchar*,int);

在進行文件操作時,函數(shù)的第1個參數(shù)表示要寫入文件的數(shù)據(jù)所在的內(nèi)存起始地址,第2個參數(shù)是要寫入文件的字節(jié)數(shù)。49說明(3)read是istream的成員函數(shù),其函數(shù)形式如下:

read(char*,int);

在進行文件操作時,函數(shù)的第1個參數(shù)表示從文件中讀入的數(shù)據(jù)所存放的內(nèi)存空間的起始地址,函數(shù)的第2個參數(shù)表示從文件中讀入的字節(jié)數(shù)。50課程案例設計與編碼(課堂練習2)51課堂練習:二進制文件的保存修改之前同學們?yōu)镃Undergraduate類和CGraStudent類添加數(shù)據(jù)保存功能,修改為以二進制形式保存數(shù)據(jù)和讀取數(shù)據(jù)。并在main()函數(shù)中定義相應的類對象,將其數(shù)據(jù)寫入文件,并讀出和顯示。52使用get()和put()函數(shù)實現(xiàn)二進制文件的讀寫get函數(shù)是輸入流類istream的成員函數(shù),可以通過它從文件流對象中讀取數(shù)據(jù),每次讀出一個字節(jié)(字符)。put函數(shù)是輸出流類ostream的成員函數(shù),可以通過它向文件流對象中寫入數(shù)據(jù),每次寫入一個字節(jié)(字符)。下面給出一個利用get和put函數(shù)讀寫二進制文件的例子。53【例6-3】

將0~9共10個數(shù)寫入二進制文件,然后從該文件中讀取這些數(shù)并顯示。#include<iostream>#include<fstream>usingnamespacestd;intmain(){

ofstreamfout("number.dat",ios::binary);

if(fout.fail()) { cout<<"Openfilefailture!"<<endl; return1; }定義輸出文件流對象fout并通過它打開或創(chuàng)建文件number.dat如果文件打開或創(chuàng)建失敗,則退出54 for(unsignedcharc=0;c<10;c++) fout.put(c); fout.close(); ifstreamfin("number.dat",ios::binary); if(fin.fail()) { cout<<"Openfilefailture!"<<endl; return1; }將0~9這10個數(shù)寫到輸出文件流對象fout中向文件流中寫入1個字節(jié)關閉文件定義輸入文件流對象fin并通過它打開文件number.dat如果文件打開失敗,則退出55 charch; while(1) { fin.get(ch); if(fin.eof()) break; cout<<(int)ch<<''; } fin.close(); return0;}從輸入流文件對象fin中讀取數(shù)據(jù)并顯示從文件流中讀取1個字節(jié)判斷是否到達了文件尾以整數(shù)的形式輸出字符變量ch的值關閉文件程序的運行結果如下:012345678956說明(1)本例中使用的put函數(shù)的原型是:

ostream&put(char)(2)本例中使用的get函數(shù)的原型是:

istream&get(char&)(3)eof函數(shù)用于判斷是否到達了文件尾。函數(shù)返回值為真說明到達了文件尾,返回值為假說明未到達文件尾。

C++程序的組織57C++程序的組織方式通常,C++程序可按照下面三種文件進行組織:(1)將類的聲明作為頭文件來保存,文件擴展名為.h或.hpp。(2)將類的成員函數(shù)定義單獨組成一個文件,文件擴展名為.cpp。(3)在主程序文件中包含main()函數(shù),由主程序文件完成對各個類對象的調(diào)用,該文件擴展名為.cpp。58“大學人員信息管理系統(tǒng)”的程序組織59說明對應的文件CDate類Date.h,Date.cppCPerson類Person.h,Person.cppCStudent類Student.h,Student.cppCEmployee類Employee.h,Employee.cppCGraStudent類GraStudent.h,GraStudent.cpp主程序(包含main()函數(shù))schoolmain.cppDate.h文件的結構#if!defined__DATE_H__ #define__DATE_H__classCDate{ intm_nYear; intm_nMonth; intm_nDay;public: CDate(intnYear,intnMonth,intnDay); ……};#endif60通過編譯預處理命令防止對CDate類的重復聲明#!defined和#endif控制源代碼要編譯的部分Date.cpp文件的結構#include"Date.h"#include<iostream>usingnamespacestd;CDate::CDate(intnYear,intnMonth,intnDay){ m_nYear=nYear; m_nMonth=nMonth; m_nDay=nDay;}……//CDate類其他成員函數(shù)的定義61編譯預處理命令#if!defined、#define和#endif這些預處理命令的功能是當一個文件中多次(直接或間接)包含include"Date.h"語句時,使得CDate類的聲明僅僅被展開一次,而不會被重復展開,從而避免聲明沖突。62條件編譯命令#if命令和#endif命令屬于條件編譯命令,用于控制源程序中被編譯的部分。條件編譯是指當滿足一定的條件時,才對程序的某部分進行編譯。#if命令和#endif命令要配套使用。在上面的代碼中,使用了下面的形式:#if!defined<標識

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論