第7章輸入輸出流_第1頁
第7章輸入輸出流_第2頁
第7章輸入輸出流_第3頁
第7章輸入輸出流_第4頁
第7章輸入輸出流_第5頁
已閱讀5頁,還剩56頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

面向?qū)ο?/p>

——第7章輸入輸出流2主要內(nèi)容流無格式輸入/輸出輸入/輸出的格式控制文件的輸入/輸出3分析問題C++沒有定義任何用于執(zhí)行輸入或輸出的語句,但可以使用C語言中的標準I/O函數(shù)printf()和scanf()來解決此問題。printf()與scanf()存在兩個缺點:非類型安全不可擴充性

4C++使用類型安全的I/O流操作。不同類型的I/O流操作都是重載的,沒有定義過I/O功能的類型不具備I/O操作的能力。C++標準庫既可作為標準數(shù)據(jù)類型數(shù)據(jù)的I/O,也能用于自定義類型的對象的I/O,這種擴展性是C++最有價值的特點之一。C++用輸入輸出流來解決這個問題。5流所謂流(stream)是指數(shù)據(jù)從一個位置流向另一個位置。流是字節(jié)的序列。輸入/輸出是一種數(shù)據(jù)傳遞操作,可以看作字符序列在計算機內(nèi)存與外設之間的流動,C++將數(shù)據(jù)從一個對象到另一個對象的流動抽象為“流”。流動的方向不同,構(gòu)成輸入/輸出流,即I/O流。6I/O流在C++程序中,數(shù)據(jù)可以從鍵盤流入到程序,也可以從程序流向屏幕或磁盤文件。從流中獲取數(shù)據(jù)的操作稱為提取操作,向流中添加數(shù)據(jù)的操作稱為插入操作。數(shù)據(jù)的輸入/輸出就是通過I/O流來實現(xiàn)的。7編譯系統(tǒng)已經(jīng)以運算符或函數(shù)的形式做好了對標準外設(鍵盤、屏幕、打印機、文件)的接口,使用時只需按照要求的格式調(diào)用即可。cin>>x;cout<<x;內(nèi)存鍵盤文件光筆....輸入流顯示器文件打印機...輸出流8I/O流類庫的層次結(jié)構(gòu)C++編譯系統(tǒng)提供的I/O流類庫含有兩個平行基類:streambufiosios類有4個直接派生類:輸入流類istream輸出流類ostream文件流類fstreambase串流類strstreambase9I/O流類庫的頭文件iostream:I/O流類庫的最主要的頭文件,它包括操作所有I/O所需的基本信息,還包括cin、cout、cerr和clog共4個對象。iomanip:包含帶參數(shù)的流操縱算子的有關(guān)信息。fstream:包含對文件I/O操作的有關(guān)信息。strstream:包含對內(nèi)存格式化I/O操作的有關(guān)信息。stdiostream:包含混合使用C和C++風格的I/O操作的有關(guān)信息。10intmain(){floata,b,c,disc;cout<<“pleaseinputa,b,c:”;cin>>a>>b>>c;if(a==0)cerr<<“aisequaltozero,error!”<<endl;elseif((disc=b*b-4*a*c)<0)cerr<<“disc=b*b-4*a*c<0”<<endl;else{cout<<“x1=”<<(-b+sqrt(disc))/(2*a)<<endl;cout<<“x2=”<<(-b-sqrt(disc))/(2*a)<<endl;}return0;}1:pleaseinputa,b,c:023aisequaltozero,error!2:pleaseinputa,b,c:523disc=b*b-4*a*c<03:pleaseinputa,b,c:12.51.5x1=-1x2=-1.511無格式輸入/輸出無格式輸入/輸出就是按系統(tǒng)預定義的格式進行的輸入/輸出。按默認約定,每個C++程序都能使用標準I/O流,如標準輸入、標準輸出。cin用來處理標準輸入,即鍵盤輸入;cout用來處理標準輸出,即屏幕輸出。它們被定義在iostream頭文件中。在使用cout和cin前,要用編譯預處理命令將所使用的頭文件包含到源程序中,其格式如下:#include<iostream>12無格式輸出“<<”是預定義的插入運算符,作用在流類對象cout上,實現(xiàn)默認格式的屏幕輸出。使用cout輸出表達式值到屏幕上的格式如下:

cout<<E1<<E2<<…<<Em;

其中,E1、E2、…、Em為均為表達式。用“cout<<”輸出基本類型的數(shù)據(jù)時,可以不必考慮數(shù)據(jù)是什么類型,系統(tǒng)會判斷數(shù)據(jù)的類型,并調(diào)用與之匹配的運算符重載函數(shù)。13無格式輸出cout是ostream流類的對象,它在iostream頭文件中作為全局對象定義,其格式如下:

ostreamcout(stdout);

其中,stdout表示標準輸出設備名(屏幕)。14無格式輸入“>>”是預定義的提取運算符,作用在流類對象cin上,實現(xiàn)默認格式的鍵盤輸入。使用cin將數(shù)據(jù)輸入到變量的格式如下:

cin>>V1>>V2>>…>>Vn;

其中,V1、V2、…、Vn都是變量。功能是暫停執(zhí)行程序,等待用戶從鍵盤輸入數(shù)據(jù),各數(shù)據(jù)間用空格或Tab鍵分隔,輸入數(shù)據(jù)類型要與接受變量類型一致,輸完后,按回車鍵結(jié)束。15無格式輸入cin是istream流類的對象,它在iostream頭文件中作為全局對象定義,其格式如下:

istreamcin(stdin);

標準輸入設備名(鍵盤)16輸入輸出的格式控制C++提供了兩種格式化輸入/輸出方式:一種是用流對象的有關(guān)成員函數(shù)進行格式化輸入輸出另一種是用專門的控制符進行格式化輸入輸出17

用流對象的成員函數(shù)格式化流成員函數(shù)主要是通過對狀態(tài)標志、輸出寬度、填充字符以及輸出精度的操作來完成輸入/輸出格式化。輸入/輸出的格式由各種狀態(tài)標志來確定,在ios類中定義為枚舉量。枚舉量定義在ios類中,因此引用時必須包含ios::前綴。使用時應該全部用符號名,絕不要用數(shù)值。18用流對象的成員函數(shù)對狀態(tài)標志進行操作

ios類有3個成員函數(shù)可以對狀態(tài)標志進行操作,并且定義了一個long型數(shù)據(jù)成員記錄當前狀態(tài)標志。這些狀態(tài)標志可用位或運算符“|”進行組合。用setf函數(shù)設置狀態(tài)標志,其一般格式如下:

longios::setf(longflags)19用流對象的成員函數(shù)對狀態(tài)標志進行操作清除狀態(tài)標志用unsetf函數(shù)清除狀態(tài)標志,其一般格式如下:

longios::unsetf(longflags)20用流對象的成員函數(shù)對狀態(tài)標志進行操作用函數(shù)flags取狀態(tài)標志有兩種形式,其格式分別如下:

longios::flags()//返回與流相關(guān)的當前狀態(tài)標志值

longios::flags(longflag)//將流的狀態(tài)標志值設置為flag,并返回設置前的狀態(tài)標志值。21用流對象的成員函數(shù)對狀態(tài)標志進行操作以上三組函數(shù)必須用流類對象(cin或cout)來調(diào)用,其格式如下:

<流對象名>.<函數(shù)名>(ios::<狀態(tài)標志>)

cout.setf(ios::showpos);cout.setf(ios::scientific);cout.setf(ios::showpos|ios::scientific);2200000010000000010011001000100001001000100010000100100010001000010000100000000000voidshowflags(longf);intmain(){longf;f=cout.flags();//取當前狀態(tài)標志

showflags(f);//顯示狀態(tài)值

cout.setf(ios::showpos|ios::scientific|ios::fixed);//追加狀態(tài)標志

f=cout.flags();//取當前狀態(tài)標志

showflags(f);//顯示狀態(tài)值

cout.unsetf(ios::scientific);//從狀態(tài)標志中去掉scientificf=cout.flags();//取當前狀態(tài)標志

showflags(f);//顯示狀態(tài)值

f=cout.flags(ios::hex);//重新設置狀態(tài)標志

showflags(f);f=cout.flags();//取當前狀態(tài)標志

showflags(f);return0;}voidshowflags(longf){longi;for(i=0x8000;i;i=i>>1)//用右移方式使i中的值為"1"的位不斷右移

if(i&f)cout<<"1";//判斷f中的某一位是否為"1"elsecout<<"0";cout<<endl;}【例】示例對狀態(tài)標志的操作。23用流對象的成員函數(shù)設置輸出寬度設置輸出寬度函數(shù)有兩種形式,其格式分別如下:

intios::width(intlen) intios::width()第一種形式是設置輸出寬度,并返回原來的輸出寬度;第二種形式是返回當前輸出寬度,默認輸出寬度為0。只對其后的第一個輸出項有效。24設置填充字符填充字符的作用是當輸出值不滿輸出寬度時用填充字符來填充,默認填充字符為空格。它與width()函數(shù)配合使用,否則沒有意義。設置填充字符函數(shù)有兩種形式,其格式分別如下:

charios::fill(charch)charios::fill()第一種形式是重新設置填充字符,并返回設置前的填充字符;第二種形式是返回當前的填充字符。25設置輸出精度設置浮點數(shù)輸出精度有兩種形式,其格式分別如下:

intios::precision(intp)intios::precision()第一種形式是重新設置輸出精度,并返回設置前的輸出精度;第二種形式是返回當前的輸出精度。默認輸出精度為6。26以上三組函數(shù)必須用流類對象(cin或cout)來調(diào)用。27width:08(newwidth)fillingwordis:(ASCIIcode32)*(42)(newfillingword)precision:6123.45679(example)8(newprecision)intmain(){inti;i=cout.width();cout<<"width:"<<i<<endl;cout.width(8);cout<<cout.width()<<"(newwidth)"<<endl;charc;c=cout.fill();cout<<"fillingwordis:"<<c<<"(ASCIIcode"<<(int)c<<")"<<endl;cout.fill('*');cout<<cout.fill()<<"("<<(int)cout.fill()<<")(newfillingword)"<<endl;intj;j=cout.precision();cout<<"precision:"<<j<<endl;cout.precision(8);cout<<123.456789<<"(example)"<<endl;cout<<cout.precision()<<"(newprecision)"<<endl;return0;}【例】示例設置輸出寬度、填充字符、輸出精度。28用控制符格式化為了不直接以標志位的方式去處理流的狀態(tài),c++標準庫提供了標準的控制符專門操控這些狀態(tài)。這組控制符不屬于任何類成員,定義在iomanip頭文件中。將它們用在提取運算符“>>”或插入運算符“<<”后面來設定輸入/輸出格式,即在讀寫對象之間插入一個修改狀態(tài)的操作。

29設置輸入/輸出寬度setw(int)用整型參數(shù)來制定輸入/輸出域的寬度。使用時只對其后一項輸入/輸出有效。當用于輸出時,若實際寬度小于設置寬度時,數(shù)據(jù)向右對齊,反之則按數(shù)據(jù)的實際寬度輸出。當用于輸入時,若輸入的數(shù)據(jù)寬度超過設置寬度時,超出的數(shù)據(jù)部分被截斷而被作為下一項輸入內(nèi)容。3012345678123456781234512345i:10#include<iostream>#include<iomanip>usingnamespacestd;intmain(){char*p="12345",*q="678";charf[4],g[4];//最后一位為'\0'inti=10;cout<<p<<setw(6)<<q<<setw(4)<<p<<q<<endl;//設置輸出寬度

cin>>setw(4)>>f>>g;//設置輸入寬度

cout<<f<<endl<<g<<endl<<"i:"<<i<<endl;return0;}【例】用控制符示例設置輸入/輸出寬度31設置輸出填充字符setfill(char)與ios::fill相同,常與setw(int)聯(lián)合使用,從而向不滿設置輸出寬度的空間填入指定的字符,不設置則填空格。設置后直至下一次設置前一直有效。參數(shù)可以是字符常量或字符變量。設置輸出精度setprecision(int)指明輸出實數(shù)的有效位數(shù)。參數(shù)為0時,按默認有效位數(shù)6輸出。在以fixed形式和scientific形式輸出時參數(shù)為小數(shù)位數(shù)。32setiosflags(ios::fixed)用定點方式表示實數(shù)。setiosflags(ios::scientific)用科學記數(shù)法方式表示實數(shù)。如果setprecision(n)與setiosflags(ios::fixed)合用,可以控制小數(shù)點右邊的數(shù)字個數(shù)。如果setprecision(n)與setiosflags(ios::scientific)合用,可以控制科學記數(shù)法中尾數(shù)的小數(shù)位數(shù)。

setiosflags(ios::left)輸出數(shù)據(jù)左對齊setiosflags(ios::right)輸出數(shù)據(jù)右對齊33setiosflags(ios::uppercase)大寫表示setiosflags(ios::showpos)輸出正數(shù)時給出“+”號setiosflags(ios::skipws)忽略前導空格resetiosflags()終止已設置的輸出格式狀態(tài),在括號中應指定內(nèi)容34Zoot1.23Jimmy35.36Al653.7Stan4358.24#include<iostream>#include<iomanip>usingnamespacestd;intmain(){doublevalues[]={1.23,35.36,653.7,4358.24};char*names[]={"Zoot","Jimmy","Al","Stan"};for(inti=0;i<4;i++)cout<<setiosflags(ios::left)//設置左對齊

<<setw(6)<<names[i]<<resetiosflags(ios::left)//取消左對齊

<<setw(10)<<values[i]<<endl;return0;}【例】設置對齊方式和輸出寬度示例353.142863.143.14285714#include<iostream>#include<iomanip>usingnamespacestd;intmain(){doublef=22.0/7;//在用浮點形式表示的輸出中,setprecision(n)表示實數(shù)的有效位數(shù)

cout<<f<<endl;//默認有效位數(shù)為6cout<<setprecision(3)<<f<<endl;//設置有效位數(shù)為3//在用定點形式表示的輸出中,setprecision(n)表示實數(shù)的小數(shù)位數(shù)

cout<<setiosflags(ios::fixed);cout<<setprecision(8)<<f<<endl;//小數(shù)位數(shù)為8return0;}【例】分別用浮點、定點的方式表示一個實數(shù)cout<<setprecision(8);cout<<setiosflags(ios::scientific)<<f<<endl;//尾數(shù)小數(shù)位數(shù)為83.14285714e+00036設置輸入/輸出整型數(shù)數(shù)制dec、hex和oct??刂茡Q行的控制符endl

代表輸出單字符“\0”的控制符ends37用戶自定義控制符函數(shù)建立輸出控制符函數(shù)的格式如下:

ostream&manip_name(ostream&stream){<自定義語句序列>returnstream;}控制符函數(shù)名38#include<iostream>#include<iomanip>usingnamespacestd;ostream&setup(ostream&stream){stream.setf(ios::left);stream<<setw(10)<<setfill('$');returnstream;}intmain(){cout<<10<<""<<setup<<10<<endl;return0;}【例】示例用戶自定義輸出控制符函數(shù)1010$$$$$$$$39用戶自定義控制符函數(shù)建立輸入控制符函數(shù)的格式如下:

istream&manip_name(istream&stream){<自定義語句序列>returnstream;}操作符函數(shù)名40#include<iostream>#include<iomanip>usingnamespacestd;istream&prompt(istream&stream){cin>>hex;cout<<"Enternumberusinghexformat:";returnstream;}intmain(){inti;cin>>prompt>>i;cout<<i<<endl;return0;}【例】示例用戶自定義輸入控制符函數(shù)Enternumberusinghexformat:ff25541

文件的輸入/輸出C++把文件看作是一個字符(字節(jié))的序列,即由一個個字符(字節(jié))順序組成。根據(jù)數(shù)據(jù)的組織形式,可分為ASCII碼文件和二進制文件。ASCII碼文件又稱為文本文件,它的每一個字節(jié)存放一個ASCII碼,代表一個字符。二進制文件是把內(nèi)存中的數(shù)據(jù)按其在內(nèi)存中的存儲形式原樣輸出到磁盤文件存放。42由于ASCII碼形式與字符一一對應,因此便于對字符進行輸出或逐個處理,但它要占用較多的存儲空間,若存于二進制文件中,可以節(jié)省存儲空間,但不能直接輸出字符形式。

56:ASCII表示為0011010100110110,占兩字節(jié)

56:二進制表示為111000,占六個二進制位43C++在頭文件fstream中定義了C++的文件流類體系,當程序中使用文件時,要包含頭文件fstream,其中定義了各種文件操作運算符及函數(shù)。iosifstream(輸入文件流)ofstream(輸出文件流)fstream文件流定義用于輸入的文件對象定義用于輸出的文件對象定義用于輸入輸出的文件對象44內(nèi)存變量(程序)鍵盤輸入文件屏幕輸出文件cin>>xcout<<xinfile>>xoutfile<<x程序?qū)ξ谋疚募牟僮髋c對鍵盤、顯示器的操作比較:在涉及文本文件的操作時,將輸入文件看成鍵盤,將輸出文件看成顯示器,格式不變。只需在程序中增加打開與關(guān)閉文件的語句。45C++中進行文件操作的一般步驟

為文件定義一個流類對象;使用open()函數(shù)建立(或打開)文件。如果文件不存在,則建立該文件;如果磁盤上已存在該文件,則打開該文件;進行讀寫操作。在建立(或打開)的文件上執(zhí)行所要求的輸入/輸出操作。一般來說,在內(nèi)存與外設的數(shù)據(jù)傳輸中,由內(nèi)存到外設稱為輸出或?qū)?,反之則稱為輸入或讀;使用close()函數(shù)關(guān)閉文件。當完成操作后,應把打開的文件關(guān)閉,避免誤操作。46在C++中,打開一個文件就是將這個文件與一個流建立關(guān)聯(lián);關(guān)閉一個文件就是取消這種關(guān)聯(lián)。open()函數(shù)的原型在fstream中定義。其原型為:

voidopen(char*filename,intmod,intaccess);其中第一個參數(shù)是用來傳遞文件名;第二個參數(shù)的值決定文件的使用方式;第三個參數(shù)的值決定文件的訪問方式。對于ifstream流類,mod的值為ios::in;對于ofstream流類,mod的值為ios::out47打開文件先建立流對象,然后調(diào)用函數(shù)open連接外部文件

流類對象名;

對象名.open(文件名,方式);調(diào)用流類帶參數(shù)的構(gòu)造函數(shù),建立流對象的同時連接外部文件

流類對象名(文件名,方式);

其中,“流類”為ifstream、ofstream或fstream。文件的打開與關(guān)閉48關(guān)閉文件使用close()成員函數(shù)進行關(guān)閉:流對象名.close()

其中,流對象名是待關(guān)閉的文件流的對象名。文件的打開與關(guān)閉49120,310.85#include<iostream>#include<fstream>usingnamespacestd;intmain(){ ofstreamostrm;

//定義流類對象

ostrm.open("f1.dat");//打開文件

ostrm<<120<<endl;//寫操作

ostrm<<310.85<<endl; ostrm.close();//關(guān)閉文件

ifstreamistrm("f1.dat");//定義流類對象

intn; doubled; istrm>>n>>d;//讀操作

cout<<n<<","<<d<<endl; istrm.close();//關(guān)閉文件

return0;}【例】示例文件的輸入/輸出操作。50文本文件的讀寫:文本文件用默認方式打開。文件的讀寫#include<iostream>#include<fstream>usingnamespacestd;intmain(){chars1[80],s2[8];fstreamoutfile;cin>>s1;outfile.open("exam.txt",ios::out);if(!outfile){cout<<"exam.txtcan’topen"<<endl;abort();}outfile<<s1;outfile.close();

outfile.open("exam.txt",ios::in);outfile>>s2;cout<<s2<<endl;outfile.close();return0;}51二進制文件的讀寫若在文件的打開方式中沒有特別說明,打開的文件均為ASCII碼文件,若要打開二進制文件,則要特別說明并用特定的讀寫函數(shù)。二進制文件用binary方式打開,讀寫方式完全由程序控制。fstreaminfile,outfile;infile.open(“inf1.dat”,ios::in|ios::binary);outfile.open(“outf1.dat”,ios::out|ios::binary);

文件名

輸入方式打開

二進制文件

文件名

輸出方式打開

二進制文件文件的讀寫52輸入函數(shù):infile.read(char*,int)輸入文件對象名

數(shù)據(jù)進入的內(nèi)存地址

一次讀入的字節(jié)數(shù)inta[10];infile.read((char*)a,10*sizeof(int));//從文件中輸入十個整型數(shù)到ainti;infile.read((char*)&i,sizeof(int));//從文件中輸入一個整型數(shù)到i由于二進制文件中的數(shù)據(jù)不是ASCII碼,故不能直接對其讀寫,必須要通過特定的函數(shù)予以轉(zhuǎn)換。文件內(nèi)存讀入地址要強制轉(zhuǎn)換成字符型53輸出文件對象名

要輸出的數(shù)據(jù)在內(nèi)存中的地址

一次輸出的字節(jié)數(shù)inta[10]={0,1,2,3,4,5,6,7,8,9};outfile.write((char*)a,10*sizeof(int));//向文件輸出一個整型數(shù)組ainti=4;outfile.write((char*)&i,sizeof(int));//向文件輸出一個整型數(shù)i輸出函數(shù):outfile.write(char*,int)文件內(nèi)存寫出地址要強制轉(zhuǎn)換成字符型54【例】二進制文件的讀寫structperson{charname[20];doubleheight;unsignedshortage;}people[3]={"wang",1.65,25,"zhang",1.78,24,"li",1.85,21};intmain(){fstreaminfile,outfile; outfile.open("exam.dat",ios::out|ios::binary);if(!outfile){cout<<"exam.datcan'topen"<<endl;abort();}for(inti=0;i<3;i++) outfile.write((char*)&people[i],sizeof(people[i]));

outfile.close(); infile.open("exam.dat",ios::in|ios::binary);if(!infile){cout<<"exam.datcan'topen"<<endl;abort();}for(intj=0;j<3;j++){infile.read((char*)&people[j],sizeof(people[j])); cout<<people[j].name<<"\t"<<people[j].height<<"\t"<<people[j].age<<endl;} infile.close(); return0;}55文件的隨機讀寫:文件打開以后,系統(tǒng)自動生成兩個隱含的流指針:讀指針和寫指針。在輸入文件流類中,有關(guān)讀指針的函數(shù)如下:移動讀指針函數(shù)istream&istream::seekg(streampospos);

該函數(shù)的功能是將輸入文件的指針移動到pos指定的位置中。文件的讀寫56istream&istream::seekg(streamoffoffset,seek_dirorigin);其中,origin的類型seek_dir是一個枚舉類型,有以下三種取值:ios::beg表示指針的起始位置為文件頭ios::cur表示指針的起始位置為當前位置ios::end表示指針的起始位置為文件尾該函數(shù)的功能是從origin指定的開始位置起,將文件指針移動offset個字節(jié)數(shù)。文件的讀寫57返回讀指針當前指向的位置值 streamposistream::tellg();該函數(shù)的功能是確定文件指針的當前位置。文件的讀寫58相應地,ostream類提供有關(guān)寫指針的函數(shù)如下:移動寫指針函數(shù)ostream&ostream::seekp(streampospos);ostream&ostream::seekp(streamoffoffset,seek_dirorigin);返回寫指針當前指向的位置值streamposostream::tellp();

函數(shù)參數(shù)的意義與讀指針函數(shù)一樣。文件的讀寫59【例】文件的隨機讀寫intmain(){fstreamfile("exam.dat",ios::in|ios::out|ios::binary);if(!file){cout<<"exam.datcan’topen"<<endl;abort();}for(inti=0;i<15;i++)file.write((char*)&i,sizeof(int));streampospos=file.tellp();cout<<"currentbytenumber:"<<pos<<endl;for(i=15;i<45;i++)file.write((char*)&i,sizeof(int));file.seekg(pos);file.read((char*)&i,sizeof(int));cout<<"Thedatastoredis"<<i<<endl;file.seekp(0,ios::beg);for(i=80;i<10

溫馨提示

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

評論

0/150

提交評論