- 1、本文档共36页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]第10章-输入输出
打开文件时要判断打开是否成功。文件成功打开后,可以使用抽取操作符“”或ifstream类的一些成员函数来进行文件输出操作,例如:? int x; double y; ...... //以文本方式输入数据 ifstream in_file(D:\\myfile.txt,ios::in); if (!in_file) exit(-1); in_file x y; //以二进制方式输入数据 ifstream in_file(D:\\myfile.dat,ios::in|ios::binary); if (!in_file) exit(-1); in_file.read((char *)x,sizeof(x)); in_file.read((char *)y,sizeof(y)); 注意:从文件输入必须要知道文件中数据的存储格式! 读取数据过程中有时需要判断文件中是否还有数据(文件是否结束)。 判断文件是否结束可以调用ios类的成员函数eof来实现: int ios::eof(); 该函数返回0表示文件未结束;返回非0表示文件结束。 文件输出操作结束时,要使用ifstream的一个成员函数close关闭文件: in_file.close(); 文件输入/输出 如果需要打开一个既能读入数据、也能输出数据的文件,则需要创建一个fstream类的对象(类fstream是类iostream的派生类)。 在创建fstream类的对象并建立与外部文件的联系时,文件打开方式应为:ios::in|ios::out(可在文件任意位置写)或ios::in|ios::app(只能在文件末尾写) 随机存取文件 为了能够随机读写文件中的数据,必须要显示地指出读写的位置。 对于以输入方式打开的文件,可用下面的操作来指定文件内部指针位置: istream istream::seekg(位置);//指定绝对位置 istream istream::seekg(偏移量,参照位置); //指定相对位置 streampos istream::tellg(); //获得指针位置 对于输出文件,可用下面的操作来指定文件内部指针位置: ostream ostream::seekp(位置);//指定绝对位置 ostream ostream::seekp(偏移量,参照位置); //指定相对位置 streampos ostream::tellp(); //获得指针位置 参照位置可以是:ios::beg(文件头),ios::cur(当前位置)和ios::end(文件尾)。 面向字符串变量的I/O 程序中的有些数据并不直接输出到标准输出设备或文件,而是需要保存在程序中的某个字符串变量中。 程序中的有些数据并不直接从标准输入设备或文件中获得,而是需要从程序中的某个字符串变量中获取。 首先需要创建类istrstream、ostrstream或strstream的一个对象 对于ostrstream类 : ostrstream str_buf; //可动态扩充的内部缓冲 //str_buf.str()获得首地址 或 char buf[100]; ostrstream str_buf(buf,100); 对于istrstream类 char buf[100]; ...... //通过某种途径在buf中存放了一些字符。 istrstream str_buf(buf); //内容以’\0’结束 或 istrstream str_buf(buf,100); 然后可以用与控制台和文件输入/输出类似的操作进行基于字符串变量的输入/输出。 第十章 输入/输出 本章内容 输入/输出(I/O)概述 面向控制台的I/O 面向文件的I/O 面向字符串变量的I/O 输入/输出(I/O)概述 输入/输出(简称I/O)是程序的一个重要组成部分: 程序运行所需要的数据往往要从外设(如:键盘、文件等)得到 程序的运行结果通常也要输出到外设(如:显示器、打印机、文件等)中去。 在C++中,输入/输出不是语言定义的成分,而是由具体的实现(编译程序)作为标准库的功能来提供。 C++的I/O流 在C++中,输入/输出操作是一种基于字节流的操作: 在进行输入操作时,可把输入的数据看成逐个字节地从外设流入到计算机内部(内存); 在进行输出操作时,则把输出的数据看成逐个字节地从内存流出到外设。 在C++的标准库中,除了提供基于字节的输入/输出操作外,为了方便使用,还提供了基于C++基本数据类型数据的输入/输出操作。 可以针对C++的I/O类库中类重载操作符“”和“” 进行重载,使其能对自定义类的对象进行输入/输出操作。 I/O的分类 面向
文档评论(0)