文档库 最新最全的文档下载
当前位置:文档库 › fstream的IO处理

fstream的IO处理

fstream的IO处理
fstream的IO处理

如何使用 类进行文件的I/O 处理

作者:Danny Kalev

编译:MTT 工作室

下载源代码

原文出处:How to Use Classes for File I/O

摘要:传统的文件I/O 库如Un ix的 ,由于其程

序接口的原因,在很大程度上强制程序员进行某些处理,缺乏类型安全和

国际化支持。C++ 的 库则在文件的I/O 方面提供了一个增

强的、面向对象的、具有国际化意识的库。本文将介绍如何使用这个库进

行文件的I/O 处理并利用它来编写易于跨平台的代码。

大多数C++ 程序员都熟悉不止一个文件I/O 库。首先是传统的Un ix风格的库,它由一些低级函数如r ead() 和open()组成。其次是ANS I C 的 库,它包含fopen() 和fr ead()等函数。其它的还有一些具备所有权的库或框架,比如MFC,它有很多自己的文件处理类。

这些库一般都很难跨平台使用。更糟的是,上述提到的 C 库由于其程序接口的原因,在很大程度上强制程序员进行某些处理,而且缺乏类型安全支持。

标准C++ 提供提供了一个增强的、面向对象的、具有国际化意识的 库。这个库包含一系列派生于标准ios_bas e 和ios 类的类模板。因此, 提供了高级的自动控制机制和健壮性。本文下面将示范如何使用 类实现文件的输入/输出处理:

第一步:创建文件流

输入文件流(ifstream)支持重载的>> 操作符,同样,输出文件流(ofstream)支持重载的<< 操作符。结合了输入和输出的文件流被称为fstream。下面的程序创建了一个ifstream 对象:d ict,并将该对象中的每一个单字显示到屏幕上:

#inc lude

#inc lude

#inc lude

#inc lude

using namespace std;

int main()

{

string s;

cout<<"enter dict ionary file: ";

cin>>s;

ifstream d ict (s.c_str());

if (!d ictionary) // were there any errors on open ing?

ex it(-1);

while (d ictionary >> s) cout << s <<''\n'';

}

我们必须调用string::c_str() 成员函数,因为fstream 对象只接受常量字符串作为文件名。当你将文件名作为参数传递时,构造函数试图打开指定的文件。接着,我们用重载的!操作符来检查文件的状态。如果出错,该操作符估值为true。最后一行是个循环,每次反复都从文件读取一个单字,将它拷贝到s,然后显示出来。注意我们不必显式地检查EOF,因为重载操作符>> 会自动处理。此外,我们不用显式地关闭此文件,因为析构函数会为我们做这件事情。

过时和荒废的 库支持ios::nocreate 和ios::noreplace 标志。但新的 库已经取代了 并不再支持这两个标志。

文件的打开模式

如果你不显式指定打开模式,fstream 类将使用默认值。例如,ifstream 默认以读方式打开某个文件并将文件指针置为文件的开始处。为了向某个文件写入数据,你需要创建一个ofstream 对象。 定义了下列打开模式和文件属性:

ios::app // 从后面添加

ios::ate // 打开并找到文件尾

ios::b inary // 二进制模式I/O (与文本模式相对)

ios::in // 只读打开

ios::out // 写打开

ios::trunc // 将文件截为0 长度

你可以用位域操作符OR 组合这些标志:

ofstream logf ile("login.dat", ios::b inary | ios::app);

fstream 类型对象同时支持读和写操作:

fstream logf ile("databas e.dat", ios::in | ios::out);

第二步:设置文件的位置

文件具备一个逻辑指针,它指向该文件中的某个偏移位置。你可以通过调用seekp()成员函数,以字节为单位将这个指针定位到文件的任意位置。为了获取从文件开始处到当前偏移的字节数,调用seekp()即可。在下面的例子中,程序将文件位置前移10个字节,然后调用tellp()报告新位置:

ofstream fout("parts.tx t");

fout.seekp(10); // 从0偏移开始前进10 个字节

cout<<"new posit ion: "<

你可以用下面的常量重新定位文ian指针:

ios::beg // 文件开始位置

ios::cur // 当前位置,例如: ios::cur+5

ios::end // 文件尾

第三步:读写数据

fstream 类为所有内建数据类型以及std::string 和std::complex类型重载<< 和>> 操作符。下面的例子示范了这些操作符的使用方法:

fstream logf ile("log.dat");

logf ile<

logf ile.seekp(ios::beg); // 位置重置

logf ile>>log in>>user; // 读取以前写入的值

作者简介

Danny Kalev是一名通过认证的系统分析师和软件工程师,专攻C++ 和形式语言理论。1997 年到2000 年期间,他是C++标准委员会成员。最近他以优异成绩完成了他在普通语言学研究方面的硕士论文。业余时间他喜欢听古典音乐,阅读维多利亚时期的文学作品,研究Hitt ite、Basque 和Ir ish Gaelic 这样的自然语言。其它兴趣包括考古和地理。Danny时常到一些C++ 论坛并定期为不同的C++ 网站和杂志撰写文章。他还在教育机构讲授程序设计语言和应用语言课程。

IIS架构与HTTP请求处理流程

****************************************************************** ******************************************************************* Windows操作系统中的IIS负责提供互联网服务,一台运行了IIS的计算机可以看成是一台Web服务器。 Windows XP SP2 中IIS主版本号为5,Windows 2003 Server为6,Vista和Windows Server 2008为7。对于Windows 2003 Server,其默认支持的https://www.wendangku.net/doc/9518712367.html,版本为1.1,因此必须单独安装.NET Framework 2.0以上版本[1]。 目前,IIS 6是使用最为广泛的版本,IIS 5已基本不在Web服务器上部署, IIS 6与IIS 5相比在系统架构上有着较大的差异,IIS 7与IIS 6相比,基本架构并没有根本性的变化,但在许多方面有新的增强和改进。本书选择IIS 6/7进行介绍,大部分内容也适合于IIS 5,但IIS 5一些已过时的特性就不介绍了。 首先,我们来仔细分辨一下三个很容易混淆的基本概念。 8.1.1网站、Web应用程序和虚拟目录 在IIS中可以创建网站、Web 应用程序和虚拟目录,以便与计算机网络上的用户共享信息。“网站”、“Web 应用程序”和“虚拟目录”这三个概念的关系如图 8?1所示。 图 8?1 网站,应用程序与虚拟目录 简而言之,一个“网站(Web Site)”包含一个或多个“ Web 应用程序(Web Application)”,一个Web 应用程序包含一个或多个“虚拟目录(Virtual Directory)”,而虚拟目录则映射到 Web 服务器或远程计算机上的物理目录。 图 8?2所示为运行IIS 7的一个Web服务器。 图 8?2 IIS 7中的网站,应用程序与虚拟目录 图 8?2中可以清楚地看到此Web服务器上有两个“网站”:Default Web Site和NewWebSite,其中Default Web Site网站中有三个“Web 应用程序”:HappyBookShopService、HappyBookShopWebSite和OnlineAlbum。而HappyBookShopWebSite应用程序下的每一个子文件夹都是一个“虚拟目录”。最顶层的虚拟目录称为“根虚拟目录”,图8?2中Web应用程序HappyBookShopWebSite的根虚拟目录为“/HappyBookShopWebSite”。

锐器伤的应急处理操作流程

锐器伤的应急处理操作流程 锐器伤应急处理: 操作时不慎被病人血液、血制品、体液、组织液污染的利器损伤时,则应: 1、立即用流动水冲洗伤口10分钟,在伤口旁端轻轻挤压,尽 可能挤出损伤处的血液,再用流动水和肥皂液进行冲洗,禁止进行伤口的局部挤压。 2、伤口冲洗后,使用75已醇或者0.5%碘伏进行消毒。 3、血液、体液或医疗废物污染液溅入眼内,马上反复使用生 理盐水冲洗结膜囊,之后立即到专科进一步处理。 4、报告。 5、寻求医疗帮助,进行医疗咨询,采纳执行医疗处理措施。 6、协助完成经血传播疾病半年内追踪观察。 7、受伤医护人员血液监测流程: 暴露源为HBsAg(+)时,受伤医务人员为HbsAg(+)或HBsAb(+)或HBcA(+),则不需注射疫苗或HBIG;受伤医护人员为HBsAb(-),未注射击队疫苗者,24小时内注射HBIG,并注射疫苗至刺伤后6个月,1年监测GOT,GPT,HbsAG,HbcAb。 暴露源为HCVAb(+)时,受伤医护人员为HCVAb(-),则3个月后采血HCVAb、肝功能。

暴露源为HIVAb(+)时,受伤医务人员为HIVAb(-),经过专家评估后,立即服用预防性用药,并进行医学观察一年:刺伤后6周、3个月、6个月、12个月HIVAb。 锐器伤: 发生针刺伤的高危操作:套回针套,摆弄针头、分开会头与注射器,没有及时或者就近丢弃针具、毁形。 锐器伤的预防: 1、小心处理利器,避免损伤。 2、注射器使用后切勿复帽,如果确实要复帽可单手持针筒挑 盖套上。 3、所有使用过的注射器、输液器的针头及头皮针不作分离, 直接放入锐器盒,盒内医疗废物四分三满时,使用有效的封口方式,封口紧实、严密,贴上特殊标记并填写使用单位、封箱时间,作医疗废物处理。 4、设计更安全的工作工具及方法。如静脉采血时使用真空试 管并使用防护用具。放弃传统的床单,使用床罩。

C++文件操作详解(ifstream、ofstream、fstream)

C++文件操作详解(ifstream 、ofstream 、fstream ) C++通过以下几个类支持文件的输入输岀: ofstream: 写操作(输岀)的文件类 ifstream: 读操作(输入)的文件类 fstream: 可同时读写操作的文件类 打开 文件(Open a file ) 对这些类的一个对象所做的第一个操作通常就是将它和一个真正的文件联系起来, 也就是说打开 一个文件。被打开的文件在程序中由一个流对象 (stream object )来表示(这些类的一个实例), 而对这个流对象所做的任何输入输岀操作实际就是对该文件所做的操作。 要通过一个流对象打开一个文件,我们使用它的成员函数 open (): void ope n (const char * file name, ope nm ode mode ); 这里file name 是一个字符串,代表要打开的文件名, mode 是以下标志符的一个组合: ios::i n 为输入(读)而打开文件 ios::out 为输岀(写)而打开文件 ios::ate 初始位置:文件尾 ios::app 所有输岀附加在文件末尾 ios::tru nc 如果文件已存在则先删除该文件 ios::b inary 二进制方式 这些标识符可以被组合使用,中间以 ”或”操作符(|)间隔。例如,如果我们想要以二进制方式打 开文件"example.bin" 来写入一些数据,我们可以通过以下方式调用成员函数 open ()来实现: ofstream file; file.ope n ("example.b in ”,ios::out | ios::app | ios::b in ary ); ofstream, ifstream 和fstream 所有这些类的成员函数 ope n 都包含了一个默认打开文件的方 式,这三个类的默认方式各不相同: 类 参数的默认方式 ofstream i os::out | ios::trunc ifstream i os::in fstream ios::i n | ios::out 只有当函数被调用时没有声明方式参数的情况下, 默认值才会被采用。 如果函数被调用时声明了 任何参数,默认值将被完全改写,而不会与调用参数组合。 由于对类ofstream, ifstream 和fstream 的对象所进行的第一个操作通常都是打开文件,这 些类都有一个构造函数可以直接调用 open 函数,并拥有同样的参数。这样,我们就可以通过以 下方式进行与上面同样的定义对象和打开文件的操作: (由ostream 引申而来) (由istream 引申而来) (由iostream 引申而来)

实验室工作人员职业暴露后的应急措施和处理流程

实验室工作人员职业暴露后的应急措施和处理流程 答:实验室发生各种传染病职业暴露后应急措施 1、含有各种传染病的血液、体液等溅洒于皮肤、黏膜表面应立即先用肥皂和流动的水或生理盐水冲洗。 2、含有各种传染病的血液、体液等溅入口腔、眼睛等部位,立即用清水、或生理盐水长时间彻底冲洗。 3、含有各种传染病的血液、体液的针头或玻璃刺伤皮肤时,立即在伤口周围轻轻挤压,挤出伤口附近的血液,然后用流动的水或生理盐水彻底冲洗,再用%碘伏、75%酒精、等消毒创面。 4、被含有各种传染病标本污染工作服、衣物时,立即用1000mg/l含氯消毒液,浸泡30-60分钟,然后冲洗干净。 5、判断暴露源性质,对特殊职业暴露特殊理: 1)、被乙肝阳性病人的血液、体液锐器刺伤→局部处理→24小时内抽血检查乙肝抗体→填写职业暴露个案登记表→24小时内报告医院感染管理科备案和相对科室的主管部门→寻求传染病专家指导意见→按传染病专家组意见注射乙肝免疫价球蛋白或注射乙肝疫苗,按0、1、6个月接种乙肝疫苗,三个月后抽血复查。 2)、被丙肝阳性病人的血液、体液污锐器刺伤→局部处理→24小时内抽血检查丙肝抗体→填写职业暴露个案登记表→24小时内报告医院感染管理科备案和相对科室的主管部门→寻求传染病专家指导意见→按传染病专家组意见执行。 3)、被确诊或可疑艾滋病阳性者职业暴露→局部处理→立即抽血→请我院及防疫站专家评估伤口暴露级别→决定是否用药→若需用药→尽量在1小时内使用→填写艾滋病职业暴露登记表→报防疫站→4周、8周、12周、6个月查艾滋病抗体。 4)、被带有梅毒阳性病人血液的锐器损伤→局部处理→24小时内抽血检查梅毒抗体→填写职业暴露个案登记表→24小时内报告医院感染管理科备案和相对科室的主管部门→感染管理科和我院传染病专家在职业暴露登记表上填写意见→苄星青霉素240万单位分两侧臀部肌肉注射、每周一次、共用三周,针刺伤当时、一个月、三个月抽血复查。四、发生职业暴露后,感染管理科对以上感染的医务人员资料进行保存和暴露后进行追踪检测。

HTTP请求报头详解

HTTP头字段包括4类: general-header ; request-header ; response-header ; entity-header . ********************************************************************* ********** General Header Fields ============================= general header是request、response都可用的, 但是不能用于entity. --Cache-Control --Connection --Date --Pragma --Trailer --Transfer-Encoding --Upgrade --Via --Warning ********************************************************************* ********** Request Header Fields ====================== request-header fields 允许客户端传递关于request和客户端的附加信息到服务端, --Accept --Accept-Charset --Accept-Encoding --Accept-Language --Authorization --Expect --From --Host --If-Match --If-Modified-Since --If-None-Match --If-Range --If-Unmodified-Since

C FSTREAM文件操作详细说明

fstream文件操作详细说明 目录 一、打开文件 (2) 二、关闭文件 (3) 三、读写文件 (3) 1、文本文件的读写 (3) 2、二进制文件的读写 (4) 四、检测EOF (5) 五、文件定位 (5)

fstream文件操作详细说明 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符: 1、插入器(<<) 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout<<"Write Stdout"<<''\n'';就表示把字符串"Write Stdout"和换行字符(''\n'')输出到标准输出流。 2、析取器(>>) 从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表示从标准输入流中读取一个指定类型(即变量x的类型)的数据。 在C++中,对文件的操作是通过stream的子类fstream(file stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件fstream.h。 一、打开文件 在fstream类中,有一个成员函数open(),就是用来打开文件的,其原型是: void open(const char*filename,int mode,int access); 参数说明: filename:要打开的文件名 mode:要打开文件的方式 access:打开文件的属性 打开文件的方式在类ios(是所有流式I/O类的基类)中定义,常用的值如下: ios::app:以追加的方式打开文件 ios::ate:文件打开后定位到文件尾,ios:app就包含有此属性 ios::binary:以二进制方式打开文件,缺省的方式是文本方式。两种方式的区别见前文ios::in:文件以输入方式打开 ios::out:文件以输出方式打开 ios::nocreate:不建立文件,所以文件不存在时打开失败 ios::noreplace:不覆盖文件,所以打开文件时如果文件存在失败 ios::trunc:如果文件存在,把文件长度设为0 可以用“或”把以上属性连接起来,如ios::out|ios::binary 打开文件的属性取值是: 0:普通文件,打开访问 1:只读文件 2:隐含文件 4:系统文件 可以用“或”或者“+”把以上属性连接起来,如:1|2就是以只读和隐含属性打开文件。 例如:以二进制输入方式打开文件c:\config.sys

http协议请求响应报文格式及状态码详解

HTTP协议报文格式 HTTP协议(Hypertext Transfer Protocol――超文本传输协议)浏览器端(客户端)向WEB 服务器端访问页面的过程和HTTP协议报文的格式。 基于HTTP协议的客户机访问包括4个过程,分别是建立TCP套接字连接、发送HTTP请求报文、接收HTTP应答报文和关闭TCP套接字连接: 1. 创建TCP套接字连接 客户端与WEB服务器创建TCP套接字连接,其中WEB端服务器的地址可以通过域名解析确定,WEB端的套接字侦听端口一般是80。 2. 发送HTTP请求报文 客户端向WEB服务端发送请求报文,HTTP协议的请求报文格式为: 请求消息= 请求行(实体头信息)CRLF[实体内容] 请求行= 方法URL HTTP版本号CRLF 方法= GET|HEAD|POST|扩展方法 URL = 协议名称+宿主名+目录与文件名 其中"CRLF"表示回车换行。 "请求行"中的"方法"描述了对指定资源执行的动作,常用的方法"GET"、"HEAD"和"POST"等3种,它们的含义如表15-8所示: 请求报文 一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,下图给出了请求报文的一般格式。 (1)请求行 请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。例如,GET /index.html HTTP/1.1。 HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。这里介绍最常用的GET方法和POST方法。 GET:当客户端要从服务器中读取文档时,使用GET方法。GET方法要求服务器将URL定位的资源放在响应报文的数据部分,回送给客户端。使用GET方法时,请求参数和对应的值附加在URL后面,利用一个问号(“?”)代表URL的结尾 与请求参数的开始,传递参数长度受限制。例如,/index.jsp?id=100&op=bind。POST:当客户端给服务器提供信息较多时可以使用POST方法。POST方法将请求参数封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据。 表15-8 HTTP请求方法

fstream_h

fstream.h #if _MSC_VER > 1000 #pragma once #endif #ifdef __cplusplus #ifndef _INC_FSTREAM #define _INC_FSTREAM #if !defined(_WIN32) && !defined(_MAC) #error ERROR: Only Mac or Win32 targets supported! #endif #ifdef _MSC_VER // Currently, all MS C compilers for Win32 platforms default to 8 byte alignment. #pragma pack(push,8) #include #endif // _MSC_VER /* Define _CRTIMP */ #ifndef _CRTIMP #ifdef _DLL #define _CRTIMP __declspec(dllimport) #else /* ndef _DLL */ #define _CRTIMP #endif /* _DLL */ #endif /* _CRTIMP */ #include #ifdef _MSC_VER // C4514: "unreferenced inline function has been removed" #pragma warning(disable:4514) // disable C4514 warning // #pragma warning(default:4514) // use this to reenable, if desired #endif // _MSC_VER typedef int filedesc; class _CRTIMP filebuf : public streambuf { public: static const int openprot; // default share/prot mode for open // optional share values for 3rd argument (prot) of open or constructor static const int sh_none; // exclusive mode no sharing static const int sh_read; // allow read sharing static const int sh_write; // allow write sharing // use (sh_read | sh_write) to allow both read and write sharing options for setmode member function static const int binary; static const int text; filebuf(); filebuf(filedesc);

(完整word版)各种职业暴露处理流程图

乙肝职业暴露处理方法与报告流程图 锐器伤后处理流程图 医务人员被患血源性传播疾病患者使用过的锐器损伤 冲洗 消毒 填写职业暴露表并报告感染控制科 发生 HIV 暴露后的报告流程 医疗科 HIV 暴露后 报告 所在科室领导 市 CDC 填写锐器伤 登记报告表 医院感染控制科 风险评估 定期随访 预防用药

乙肝职业暴露处理方法与报告流程图

乙肝职业暴露处理方法与报告流程图 HbsAb(-) HbsAg(-) HbsAg(-) 10iu/ml 或 HbsAg(+) ①肌注 HBIG200u (24h 内 ) ②强化肌注乙肝疫苗一次 不需进一步处理 消毒 用安尔碘或 75 %乙 醇等反复消毒、包扎 科室主任、 护士长 未接种乙肝 疫苗 接种后无抗体 产生 HbsAb (-) HbsAg 定量< 10/iu/ml HbsAb(+) 或 定 量 >

医务人员暴露于丙肝污染血后 醇等反复消毒、包扎 时间、地点、污染物、伤口部位与深浅、有 无出血等 目前尚无统一预防用药标准 定期追踪肝功能、丙肝抗体 即刻、1、3、6 个月 冲洗挤压伤口刺激出血, 同时用流动水冲洗 预防用药 梅毒职业暴露处理方法与报告流程图

HIV 职业暴露处理流程图

冲洗 挤压伤口刺激出血, 同时用流动水冲洗 报告 风险评估 评估预防用药方案 一级暴露暴 露源轻度 二级暴露暴 露源轻度 暴露级别不明 暴露源级别不 明 不使用预 防性用药 一级暴露暴 露源重度 使用基本 用药方案 二级暴露暴 露源重度 强化用 药方案 三级暴露 暴露源轻 度或重度检测HIV 抗体(即刻、4、8、12 周及6个月和12 月) 用安尔碘或75 %乙醇 等反复消毒、包扎 科室主任、护 士长 报告时间、地点、污染物、名 称、伤口部位、病种 报告感染控 制科 一级二级三级 暴露暴露暴露 暴露源暴露源暴露源 轻度重度不明 暴露级别暴露源级别

HTTP请求方法及响应码详解(http get post head)

HTTP是Web协议集中的重要协议,它是从客户机/服务器模型发展起来的。客户机/服务器是运行一对 相互通信的程序,客户与服务器连接时,首先,向服务器提出请求,服务器根据客户的请求,完成处理 并给出响应。浏览器就是与Web服务器产生连接的客户端程序,它的端口为TCP的80端口,。浏览器 与Web 服务器之间所遵循的协议就是HTTP。 HTTP的早期版本为HTTP/0.9,它适用于各种数据信息的简洁快速协议,但是其远不能满足日益发展各 种应用的需要。但HTTP/0.9作为HTTP协议具有典型的无状态性:每个事务都是独立进行处理的,当 一个事务开始就在客户与服务器之间建立一个连接,当事务结束时就释放这个连接。HTTP/0.9包含Simple-Request&Simple-Responsed的报文结构。但是客户无法使用内容协商,所以服务器也无法 返回实体的媒体类型。 1982年,Tim Berners-Lee提出了HTTP/1.0,在此后的不断丰富和发展中,HTTP/1.0成为最重要 的面向事务的应用层协议。该协议对每一次请求/响应,建立并拆除一次连接。其特点是简单、易于管理,所以它符合了大家的需要,得到了广泛的应用。其缺点是仍会发生下列问题:对用户请求响应慢、网络拥 塞严重、安全性等。 1997年形成的HTTP/1.1,也就是现在普遍使用的协议,在持续连接操作机制中实现流水方式,即客户 端需要对同一服务器发出多个请求时,其实现在多数的网页都是有多部分组成(比如多张图片),可用 流水线方式加快速度,流水机制就是指连续发出多个请求并等到这些请求发送完毕,再等待响应。这样 就大大节省了单独请求对响应的等待时间,使我们得到更快速的浏览。 另外,HTTP/1.1服务器端处理请求时按照收到的顺序进行,这就保证了传输的正确性。当然,服务器端 在发生连接中断时,会自动的重传请求,保证数据的完整性。 HTTP/1.1还提供了身份认证、状态管理和Cache缓存等机制。这里,我想特别提一下关于HTTP/1.1 中的Cache缓存机制对 HTTP/1.0的不足之处的改进,它严格全面,既可以减少时间延迟、又节省了带宽。HTTP/1.1采用了内容协商机制,选择最合适的用户的内容表现形式。 现在,很多地方都有用到的虚拟主机技术在HTTP/1.1中也可以实现。所谓的虚拟主机技术,就是同一 主机地址实际对应多台主机。通俗的讲,当你同时在一个网站申请两个主页时,用协议分析仪可以发现 其实这两个主页对应的是同一个IP地址。这样用多台完全相同的机器形成WWW服务器就可以提高处 理的吞吐量。 传统的解决方案是改造域名服务器使其可以根据一定的算法将同一域名解释成不同的IP地址。分别对应 虚拟主机的每台机器,其缺点是要求每台机器占用完全独立的IP地址,这与IP地址的缺乏是相矛盾的。HTTP/1.1提供的解决方案在HTTP协议自身中加入了指定不同主机的功能,从而多台主机可以共享一个IP地址,既提高了性能又便于管理。 因为HTTP/1.1是Internet现行的标准协议,这里详细介绍其相关语法。 首先,HTTP/1.1格式可写为: 其中请求方法是请求一定的Web页面的程序或用于特定的URL。可选用下列几种: GET:请求指定的页面信息,并返回实体主体。 HEAD:只请求页面的首部。 POST:请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。 PUT:从客户端向服务器传送的数据取代指定的文档的内容。

fstream用法

ofstream/ifstream 文本/二进制方式读入/写出数据方法 文件I/O 在C++中比烤蛋糕简单多了。在这篇文章里,我会详细解释ASCII和二进制文件的输入输出的每个细节,值得注意的是,所有这些都是用C++完成的。 一、ASCII 输出 为了使用下面的方法, 你必须包含头文件(译者注:在标准C++中,已经使用取代< fstream.h>,所有的C++标准头文件都是无后缀的。)。这是的一个扩展集, 提供有缓冲的文件输入输出操作. 事实上, 已经被包含了, 所以你不必包含所有这两个文件, 如果你想显式包含他们,那随便你。我们从文件操作类的设计开始, 我会讲解如何进行ASCII I/O 操作。如果你猜是"fstream," 恭喜你答对了!但这篇文章介绍的方法,我们分别使用"ifstream"?和"ofstream" 来作输入输出。 如果你用过标准控制台流"cin"?和"cout," 那现在的事情对你来说很简单。我们现在开始讲输出部分,首先声明一个类对象。ofstream fout; 这就可以了,不过你要打开一个文件的话, 必须像这样调用ofstream::open()。 fout.open("output.txt"); 你也可以把文件名作为构造参数来打开一个文件. ofstream fout("output.txt"); 这是我们使用的方法, 因为这样创建和打开一个文件看起来更简单. 顺便说一句, 如果你要打开的文件不存在,它会为你创建一个, 所以不用担心文件创建的问题. 现在就输出到文件,看起来和"cout"的操作很像。对不了解控制台输出"cout"的人, 这里有个例子。 int num = 150; char name[] = "John Doe"; fout << "Here is a number: " << num << "\n"; fout << "Now here is a string: " << name << "\n"; 现在保存文件,你必须关闭文件,或者回写文件缓冲. 文件关闭之后就不能再操作了, 所以只有在你不再操作这个文件的时候才调用它,它会自动保存文件。回写缓冲区会在保持文件打开的情况下保存文件, 所以只要有必要就使用它。回写看起来像另一次输出, 然后调用方法关闭。像这样:

运行时创建HTTP请求及请求的处理

1、发起请求 下面这个方法的作用就是接收要发送的数据及数据要发送到的URL,然后返回响应数据 protected string SendRequest(string data,string url) { WebRequest req = WebRequest.Create(url); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; byte[] sendBytes = Encoding.UTF8.GetBytes(data); req.ContentLength = sendBytes.Length; Stream reqStream = req.GetRequestStream(); reqStream.Write(sendBytes, 0, sendBytes.Length); reqStream.Close(); WebResponse res = req.GetResponse(); Stream resStream = res.GetResponseStream(); StreamReader sr = new StreamReader(resStream, Encoding.UTF8); string resData = sr.ReadToEnd(); sr.Close(); resStream.Close(); return resData; } 使用示例: protected void btnSubscribe_Click(object sender, EventArgs e) { string FileName = Server.MapPath("订购.xml");

ofstream的使用方法

ofstream的使用方法 ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符: 1、插入器(<<) 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout<<"Write Stdout"<<’\n’;就表示把字符串"Write Stdout"和换行字符(’\n’)输出到标准输出流。 2、析取器(>>) 从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表示从标准输入流中读取一个指定类型(即变量x的类型)的数据。 在C++中,对文件的操作是通过stream的子类fstream(file stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件fstream.h。下面就把此类的文件操作过程一一道来。 一、打开文件 在fstream类中,有一个成员函数open(),就是用来打开文件的,其原型是: void open(const char* filename,int mode,int access); 参数: filename:要打开的文件名 mode:要打开文件的方式 access:打开文件的属性 打开文件的方式在类ios(是所有流式I/O类的基类)中定义,常用的值如下: ios::app:以追加的方式打开文件 ios::ate:文件打开后定位到文件尾,ios:app就包含有此属性 ios::binary:以二进制方式打开文件,缺省的方式是文本方式。两种方式的区别见前文ios::in:文件以输入方式打开(文件数据输入到内存) ios::out:文件以输出方式打开(内存数据输出到文件) ios::nocreate:不建立文件,所以文件不存在时打开失败 ios::noreplace:不覆盖文件,所以打开文件时如果文件存在失败 ios::trunc:如果文件存在,把文件长度设为0 可以用“或”把以上属性连接起来,如ios::out|ios::binary 打开文件的属性取值是: 0:普通文件,打开访问 1:只读文件 2:隐含文件 4:系统文件 可以用“或”或者“+”把以上属性连接起来,如3或1|2就是以只读和隐含属性打开文件。 例如:以二进制输入方式打开文件c:\config.sys fstream file1; file1.open("c:\\config.sys",ios::binary|ios::in,0); 如果open函数只有文件名一个参数,则是以读/写普通文件打开,即: file1.open("c:\\config.sys"); <=> file1.open("c:\\config.sys",ios::in|ios::out,0); 另外,fstream还有和open()一样的构造函数,对于上例,在定义的时侯就可以打开文件了:

http协议交互过程

竭诚为您提供优质文档/双击可除 http协议交互过程 篇一:wireshake抓包分析tcp与http过程详解 http协议报文格式详解 在我们日常生活中最常见的应用环境就是上网浏览网页,很多上班族到办公室的第一件事就是打开电脑,而开机后的第一件事就是打开ie、Firefox、myie、greenbrowser、opera等浏览器时,做的第一件事就是浏览一下例如.cn,的新闻,而这种简单的应用操作,完成的交互过程就是一个典型的http协议的应用过程。 http是基于tcp的连接,因此,建立http连接必须经过tcp的过程,tcp的建立过程是3次握手的过程。然后就是http过程,http只有两种报文,请求和应答报文。完成http过程后,3次断开tcp连接。 http tcp的第一阶段 http开始之前先3次握手,第一阶段就是客户向服务器发送同步请求,flag字段的syn位置1。 第二阶段

第二阶段就是服务器向客户回复一个ack包,其中Flag 字段的syn位和ack字段置1。 tcp的第三阶段: tcp的第三阶段是客户向服务器发送ack,至此,tcp的3次握手结束 tcp三次握手结束之后就是http请求 客户发出http请求之后,服务器收到请求发送ack: 服务器发送应答报文 篇二:http协议分析报告实例 http协议分析 1实验目的 分析http协议报文首部格式,理解http协议工作过程2实验内容 截获http报文,分析http协议报文首部格式,学习http 协议工作过程。3实验原理 超文本传送协议http(hypertexttransferprotocol),是万维网客户程序与万维网服务器程序之间的交互所要严 格遵守的协议。http是一个应用层协议,它使用tcp连接进行可靠的传送。对于万维网站点的访问要使用的http协议。 http的uRl的一般形式是:http://:/ www采用b/s结构,客户使用浏览器在uRl栏中输入http 请求,即输入对方服务器的地址,向web服务器提出请求。

锐器伤处理操作流程图

锐器伤处理操作流程图 发生锐器伤 伤口紧急处理 报告院感科报告部门负责人 院感科紧急评估和指导针刺伤员工抽血化验,填写《医务 人员职业锐器伤登记表》锐器无污染乙肝、丙肝、锐器污染或可能污染乙肝、丙肝、艾滋病、 艾滋病、梅毒等病毒梅毒等病毒 密切观察、随访 暴露源HIV(+) 暴露源HBV(+) 暴露源HCV(+) 暴露梅毒抗体阳性 +) 预防保健科报告疾控立即注射长效青霉素,1、立即检测HbsAg、抗-Hbs、ALT 等,在3和6个月内复查。暴露后第3月、6月、中心,由疾控专家负每周一次,连续三次。9月和一年随访并咨2、如已接种过乙肝疫苗,且已知抗- Hbs?10mIU/ml者,可不责后续治疗和随访询暴露后当天检查RPR、进行特殊处理。 1月后查TPHA、RPR。 3、如未接种过乙肝疫苗,或虽接种过乙肝疫苗,但抗-Hbs, 10mIU/ml或抗- Hbs水平不详,应立即注射乙肝高价免疫球蛋白, 并同时在不同部位接种一针乙肝疫苗,于1和6个月后分别接种第二 针和第三针乙肝疫苗。 3月随访和咨询 第3、6月随访和咨询 院感科记录整个过程,分析原因并提出改进措施

三、发生锐器损伤后的处理措施 1、用肥皂液和流动水清洗污染的皮肤,用生理盐水冲洗粘膜。 2、如有伤口应在伤口旁轻轻挤压,尽可能挤出损伤处的血液,再用肥皂液和流动水进行清洗;禁止进行伤口的挤压。 3、受伤部位的伤口冲洗后,应用消毒液如:75%酒精、0.5%碘伏进行消毒,并包扎伤口,被暴露的粘膜应当反复用生理盐水冲洗干净。 4、及时报告科室负责人、院内感染专职人员,并填写锐器损伤登记表,进行血源性疾病检查和随访等。 5、如被HBV阳性病人血液、体液污染的锐器刺伤,应在24小时内到指定医院注射乙肝疫苗或高价球蛋白,同时进行血液乙肝标志物检查,阴性者皮下注射乙肝疫苗10ug、5ug、5ug(按0、1月、6月间隔)。

ofstream和ifstream详细用法

ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间? 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符: 1、插入器(<<) 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout<<"Write Stdout"<<'\n'?就表示把字符串"Write Stdout"和换行字符('\n')输出到标准输出流。 2、析取器(>>) 从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x?就表示从标准输入流中读取一个指定类型(即变量x的类型)的数据。 在C++中,对文件的操作是通过stream的子类fstream(file stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件fstream.h。下面就把此类的文件操作过程一一道来。 一、打开文件 在fstream类中,有一个成员函数open(),就是用来打开文件的,其原型是: void open(const char* filename,int mode,int access)? 参数: filename: 要打开的文件名 mode: 要打开文件的方式 access: 打开文件的属性 打开文件的方式在类ios(是所有流式I/O类的基类)中定义,常用的值如下: ios::app: 以追加的方式打开文件 ios::ate: 文件打开后定位到文件尾,ios:app就包含有此属性 ios::binary: 以二进制方式打开文件,缺省的方式是文本方式。两种方式的区别见前文 ios::in: 文件以输入方式打开(文件数据输入到内存) ios::out: 文件以输出方式打开(内存数据输出到文件) ios::nocreate: 不建立文件,所以文件不存在时打开失败 ios::noreplace:不覆盖文件,所以打开文件时如果文件存在失败 ios::trunc: 如果文件存在,把文件长度设为0 可以用“或”把以上属性连接起来,如ios::out|ios::binary 打开文件的属性取值是: 0:普通文件,打开访问 1:只读文件 2:隐含文件 4:系统文件 可以用“或”或者“+”把以上属性连接起来,如3或1|2就是以只读和隐含属性打开文件。 例如:以二进制输入方式打开文件c:\config.sys fstream file1? file1.open("c:\\config.sys",ios::binary|ios::in,0)?

C++中文件流(fstream)的使用方法及示例

【转载】C++中文件流(fstream)的使用方法及示例 (2011-08-22 16:00:14)转载▼ 分类:编程拾萃 标签:杂 谈 C++文件流: fstream // 文件流 ifstream // 输入文件流 ofstream // 输出文件流 头文件: #include //创建一个文本文件并写入信息 //同向屏幕上输出信息一样将信息输出至文件 #include #include void main() { ofstream ofs("C:\\example.txt"); //打开文件用于写,若文件不存在就创建它 if (!ofs) return; //打开文件失败则结束运行 f1 << setw(20) << "Name: " << "Beethoven" << endl; //使用插入运算符写文件内容

f1 << setw(20) << "song: " << "Moonlight Sonata" << endl; f1.close(); //关闭文件} 文件操作: 打开文件 文件名 注意路径名中的斜杠要双写,如: "D:\\MyFiles\\ReadMe.txt" 文件打开方式选项: ios::in = 0x01, //供读,文件不存在则创建(ifstream默认的打开方式) ios::out = 0x02, //供写,文件不存在则创建,若文件已存在则清空原内容(ofstream默认的打开方式) ios::ate = 0x04, //文件打开时,指针在文件最后。可改变指针的位置,常和in、out联合使用 ios::app = 0x08, //供写,文件不存在则创建,若文件已存在则在原文件内容后写入新的内容,指针位置总在最后 ios::trunc = 0x10, // 在读写前先将文件长度截断为0(默认) ios::nocreate = 0x20, //文件不存在时产生错误,常和in或app

http请求处理流程(讲的很清楚)

.NET平台处理HTTP请求 .NET平台处理HTTP请求的过程大致如下: 1、IIS得到一个请求;,。 2、查询脚本映射扩展,然后把请求映射到文件 3、代码进入工作者进程(IIS5里是;IIS6里是,工作者进程也叫辅助进程; 4、 .NET运行时被加载; 5、非托管代码调用()方法; 6、每一个请求调用一个IsapiWorkerRequest; 7、使用WorkerRequest调用()方法; 8、通过传递进来的WorkerRequest创建一个HttpContext对象 9、通过把上下文对象作为参数传递给(),然后调用该方法,从应用程序池中获取一个HttpApplication实例; 10、调用(),启动管道事件序列,钩住模块和处理器; 11、调用,开始处理请求; 12、触发管道事件; 13、调用HTTP处理器和ProcessRequest方法; 14、把返回的数据输出到管道,触发处理请求后的事件。 当客户端向Web服务器请求一个页面文件时,这个HTTP请求会被进程截获(WWW服务),它判断文件后缀,如果是*.aspx、*.asmx等,就把这个请求转交给,而则会通过一个Http PipeLine的管道,将这个HTTP请求发送给进程,当这个HTTP请求进入进程之后, framework就会通过HttpRuntime来处理这个HTTP 请求,处理完毕后将结果返回给客户端。 当一个HTTP请求被送入到HttpRuntime之后,这个HTTP请求通过HTTP管道(HttpRuntime是HTTP管道的入口)被送入到一个被称之为HttpApplication Factory的一个容器当中,而这个容器会给出一个HttpApplication实例来处理传递进来的HTTP请求,同时HttpApplication实例会创建一个HttpContext对象来记录HTTP请求的上下文,而后这个HTTP请求会依次进入到如下几个容器中:HttpModule --> HttpHandler Factory --> HttpHandler当系统内部的HttpHandler的ProcessRequest方法处理完毕之后,整个Http Request就被处理完成了。 如果想在中途截获一个HttpRequest并做些自己的处理,就应该在HttpRuntime运行时内部来做到这一点,确切的说时在HttpModule这个容器中做到这个的。 过程详解: 从本质上讲,主要是由一系列的类组成,这些类的主要目的就是将Http请求转变为对客户端的响应。HttpRuntime类是的一个主要入口,它有一个ProcessRequest方法,这个方法以一个 HttpWorkerRequest 类作为参数。HttpRuntime类几乎包含着关于单个Http请求的所有信息:所请求的文件、服务器端变量、QueryString、Http头信息等等。使用这些信息来加载、运行正确的文件,并且将这个请求转换到输出流中,一般来说,就是HTML页面;二般来说,也可以是张图片^_^。

相关文档
相关文档 最新文档