当前位置: 首页 > news >正文

做网站的不给ftp完全可定制的软件

做网站的不给ftp,完全可定制的软件,后端开发网站做一些什么,徐州云网信息技术有限公司C 通过以下几个类支持文件的输入输出#xff1a; ofstream: 写操作#xff08;输出#xff09;的文件类 (由ostream引申而来)ifstream: 读操作#xff08;输入#xff09;的文件类(由istream引申而来)fstream: 可同时读写操作的文件类 (由iostream引申而来) 打开文件(Ope… C 通过以下几个类支持文件的输入输出 ofstream: 写操作输出的文件类 (由ostream引申而来)ifstream: 读操作输入的文件类(由istream引申而来)fstream: 可同时读写操作的文件类 (由iostream引申而来) 打开文件(Open a file) 对这些类的一个对象所做的第一个操作通常就是将它和一个真正的文件联系起来也就是说打开一个文件。被打开的文件在程序中由一个流对象(stream object)来表示 (这些类的一个实例) 而对这个流对象所做的任何输入输出操作实际就是对该文件所做的操作。 要通过一个流对象打开一个文件我们使用它的成员函数open() void open (const char * filename, openmode mode);这里filename 是一个字符串代表要打开的文件名mode 是以下标志符的一个组合 ios::in为输入(读)而打开文件ios::out为输出(写)而打开文件ios::ate初始位置文件尾ios::app所有输出附加在文件末尾ios::trunc如果文件已存在则先删除该文件ios::binary二进制方式 这些标识符可以被组合使用中间以”或”操作符(|)间隔。例如如果我们想要以二进制方式打开文件example.bin 来写入一些数据我们可以通过以下方式调用成员函数open来实现 ofstream file; file.open (example.bin, ios::out | ios::app | ios::binary);ofstream, ifstream 和 fstream所有这些类的成员函数open 都包含了一个默认打开文件的方式这三个类的默认方式各不相同 类参数的默认方式ofstreamios::out | ios::truncifstreamios::infstreamios::in | ios::out 只有当函数被调用时没有声明方式参数的情况下默认值才会被采用。如果函数被调用时声明了任何参数默认值将被完全改写而不会与调用参数组合。 由于对类ofstream, ifstream 和 fstream 的对象所进行的第一个操作通常都是打开文件这些类都有一个构造函数可以直接调用open 函数并拥有同样的参数。这样我们就可以通过以下方式进行与上面同样的定义对象和打开文件的操作 ofstream file (example.bin, ios::out | ios::app | ios::binary);两种打开文件的方式都是正确的。 你可以通过调用成员函数is_open()来检查一个文件是否已经被顺利的打开了 bool is_open();它返回一个布尔(bool)值为真true代表文件已经被顺利打开假( false )则相反。 关闭文件(Closing a file) 当文件读写操作完成之后我们必须将文件关闭以使文件重新变为可访问的。关闭文件需要调用成员函数close()它负责将缓存中的数据排放出来并关闭文件。它的格式很简单 void close ();这个函数一旦被调用原先的流对象(stream object)就可以被用来打开其它的文件了这个文件也就可以重新被其它的进程(process)所有访问了。 为防止流对象被销毁时还联系着打开的文件析构函数(destructor)将会自动调用关闭函数close。 文本文件(Text mode files) 类ofstream, ifstream 和fstream 是分别从ostream, istream 和iostream 中引申而来的。这就是为什么 fstream 的对象可以使用其父类的成员来访问数据。 一般来说我们将使用这些类与同控制台(console)交互同样的成员函数(cin 和 cout)来进行输入输出。如下面的例题所示我们使用重载的插入操作符 // writing on a text file#include fiostream.hint main () {ofstream examplefile (example.txt);if (examplefile.is_open()) {examplefile This is a line.\n;examplefile This is another line.\n;examplefile.close();}return 0;} file example.txt  This is a line. This is another line. 从文件中读入数据也可以用与 cin的使用同样的方法 // reading a text file#include iostream.h#include fstream.h#include stdlib.hint main () {char buffer[256];ifstream examplefile (example.txt);if (! examplefile.is_open()){ cout Error opening file; exit (1); }while (! examplefile.eof() ) {examplefile.getline (buffer,100);cout buffer endl;}return 0;} This is a line. This is another line. 上面的例子读入一个文本文件的内容然后将它打印到屏幕上。注意我们使用了一个新的成员函数叫做eof 它是ifstream 从类 iOS 中继承过来的当到达文件末尾时返回true 。 状态标志符的验证(Verification of state flags) 除了eof()以外还有一些验证流的状态的成员函数所有都返回bool型返回值 bad() 如果在读写过程中出错返回 true 。例如当我们要对一个不是打开为写状态的文件进行写入时或者我们要写入的设备没有剩余空间的时候。 fail() 除了与bad() 同样的情况下会返回 true 以外加上格式错误时也返回true 例如当想要读入一个整数而获得了一个字母的时候。 eof() 如果读文件到达文件末尾返回true。 good() 这是最通用的如果调用以上任何一个函数返回true 的话此函数返回 false 。 要想重置以上成员函数所检查的状态标志你可以使用成员函数clear()没有参数。 获得和设置流指针(get and put stream pointers) 所有输入/输出流对象(i/o streams objects)都有至少一个流指针 ifstream 类似istream, 有一个被称为get pointer的指针指向下一个将被读取的元素。ofstream, 类似 ostream, 有一个指针 put pointer 指向写入下一个元素的位置。fstream, 类似 iostream, 同时继承了get 和 put 我们可以通过使用以下成员函数来读出或配置这些指向流中读写位置的流指针 tellg() 和 tellp() 这两个成员函数不用传入参数返回pos_type 类型的值(根据ANSI-C 标准) 就是一个整数代表当前get 流指针的位置 (用tellg) 或 put 流指针的位置(用tellp). seekg() 和seekp() 这对函数分别用来改变流指针get 和put的位置。两个函数都被重载为两种不同的原型 seekg ( pos_type position ); seekp ( pos_type position ); 使用这个原型流指针被改变为指向从文件开始计算的一个绝对位置。要求传入的参数类型与函数 tellg 和tellp 的返回值类型相同。 seekg ( off_type offset, seekdir direction ); seekp ( off_type offset, seekdir direction ); 使用这个原型可以指定由参数direction决定的一个具体的指针开始计算的一个位移(offset)。它可以是 ios::beg从流开始位置计算的位移ios::cur从流指针当前位置开始计算的位移ios::end从流末尾处开始计算的位移 流指针 get 和 put 的值对文本文件(text file)和二进制文件(binary file)的计算方法都是不同的因为文本模式的文件中某些特殊字符可能被修改。由于这个原因建议对以文本文件模式打开的文件总是使用seekg 和 seekp的第一种原型而且不要对tellg 或 tellp 的返回值进行修改。对二进制文件你可以任意使用这些函数应该不会有任何意外的行为产生。 以下例子使用这些函数来获得一个二进制文件的大小 // obtaining file size#include iostream.h#include fstream.hconst char * filename example.txt;int main () {long l,m;ifstream file (filename, ios::in|ios::binary);l file.tellg();file.seekg (0, ios::end);m file.tellg();file.close();cout size of filename;cout is (m-l) bytes.\n;return 0;} size of example.txt is 40 bytes. 二进制文件(Binary files) 在二进制文件中使用 和以及函数如getline来操作符输入和输出数据没有什么实际意义虽然它们是符合语法的。 文件流包括两个为顺序读写数据特殊设计的成员函数write 和 read。第一个函数 (write) 是ostream 的一个成员函数都是被ofstream所继承。而read 是istream 的一个成员函数被ifstream 所继承。类 fstream 的对象同时拥有这两个函数。它们的原型是 write ( char * buffer, streamsize size ); read ( char * buffer, streamsize size );这里 buffer 是一块内存的地址用来存储或读出数据。参数size 是一个整数值表示要从缓存buffer中读出或写入的字符数。 // reading binary file#include iostream#include fstream.hconst char * filename example.txt;int main () {char * buffer;long size;ifstream file (filename, ios::in|ios::binary|ios::ate);size file.tellg();file.seekg (0, ios::beg);buffer new char [size];file.read (buffer, size);file.close();cout the complete file is in a buffer;delete[] buffer;return 0;} The complete file is in a buffer 缓存和同步(Buffers and Synchronization) 当我们对文件流进行操作的时候它们与一个streambuf 类型的缓存(buffer)联系在一起。这个缓存buffer实际是一块内存空间作为流(stream)和物理文件的媒介。例如对于一个输出流每次成员函数put (写一个单个字符)被调用这个字符不是直接被写入该输出流所对应的物理文件中的而是首先被插入到该流的缓存buffer中。 当缓存被排放出来(flush)时它里面的所有数据或者被写入物理媒质中如果是一个输出流的话或者简单的被抹掉(如果是一个输入流的话)。这个过程称为同步(synchronization)它会在以下任一情况下发生 当文件被关闭时: 在文件被关闭之前所有还没有被完全写出或读取的缓存都将被同步。当缓存buffer 满时:缓存Buffers 有一定的空间限制。当缓存满时它会被自动同步。控制符明确指明:当遇到流中某些特定的控制符时同步会发生。这些控制符包括flush 和endl。明确调用函数sync(): 调用成员函数sync() (无参数)可以引发立即同步。这个函数返回一个int 值等于-1 表示流没有联系的缓存或操作失败。
http://www.zqtcl.cn/news/137630/

相关文章:

  • 网站设计包含哪些技术外行怎么做网站
  • 网站建设运营知识推广软文平台
  • 营销型网站建设用途网站 文件夹结构
  • 制作网站建设策划方案cosy主题wordpress
  • 网站建设服务联享科技net和cn哪个做网站好
  • 深圳网站制作公司哪家好艺考培训学校
  • 潍坊网站的公司电话html网站开发基础
  • 网站模板样式做地图特效的网站
  • 商标查询官方网站有没有免费找客户的软件
  • 网站开发及服务合同行业网站名称
  • 网站建设费包括什么建筑设计领域
  • 网站建设 信科网络建行网站会员注册用户名
  • 网站建设的什么是开发实施注意什么网站开发实用技术pdf
  • 网站设计的资质叫什么贵阳网站建设咨询
  • 郑州哪家公司做网站怎么做自己的销售网站
  • 北大青鸟教网站开发吗中国电信 网站备案
  • 网站目录结构图wordpress ftp连接不上
  • 使用php做的网站有哪些网站备案密码重置申请表
  • php网站开发好找工作吗一叶子电子商务网站建设策划书
  • 运营好还是网站开发好购买域名后怎样建公司官网
  • 优秀设计网站推荐晋江市住房和城乡建设局网站
  • 杭州市区网站制作单位青海公路建设服务网站
  • 大型门户网站建设美丽杭州房价
  • 素材下载解析接口网站开发网站关键词热度
  • 山东seo推广网站建设新乡手机网站建设官网
  • 网站定制公司报价wordpress清新模板下载
  • 斗鱼网站开发是用什么语言东莞人才网智通
  • 淘宝上网站建设为啥这么便宜自己如何建设个网站
  • 做网站判多少年滦南网站建设
  • 网站开发难不难学做网站会提供源代码吗