fstream_h

合集下载

fstream的用法

fstream的用法

fstream的用法fstream是C++标准库中的一个类,用于处理文件输入输出操作。

使用fstream类可以方便地对文件进行读写、复制、删除等操作。

下面介绍fstream的基本用法。

一、声明fstream对象使用fstream类之前,需要先声明一个fstream对象。

对象名通常以文件名开头,后接一个冒号和文件打开模式,如“fstreamfile_name:app”。

1.文件打开模式:fstream提供了多种文件打开模式,包括“in”(只读模式)、“out”(只写模式)、“app”(追加模式)和“binary”(二进制模式)等。

根据需要选择合适的文件打开模式。

2.声明对象:在程序中声明一个fstream对象,例如:```cppfstreamfile_name;```二、打开文件使用fstream对象之前,需要先打开文件。

可以使用open()函数打开文件,例如:```cppfile_name.open("example.txt",ios::app);```上述代码将文件“example.txt”以追加模式打开。

如果文件不存在,则会创建一个新文件。

三、读写文件使用fstream对象可以方便地进行读写操作。

可以使用read()函数从文件中读取数据,使用write()函数向文件中写入数据。

例如:```cppcharbuffer[100];file_name.read(buffer,sizeof(buffer));//从文件中读取数据到buffer中file_name.write("HelloWorld!",11);//向文件中写入数据"HelloWorld!"```四、关闭文件使用完文件后,需要关闭文件以确保资源得到释放。

可以使用close()函数关闭文件,例如:```cppfile_name.close();//关闭文件```五、其他常用操作除了读写操作外,fstream类还提供了其他常用操作,例如:复制文件、移动文件指针等。

string头文件

string头文件

string头文件#include"string,h"这是C语言/C++中的字符串处理函数的头文件下面是大多数的头文件:可以参考.我也是从别的地方找的.哈哈.见笑啦!/******************************/C、传统C++#include<assert.h>//设定插入点#include<ctype.h>//字符处理#include<errno.h>//定义错误码#include<float.h>//浮点数处理#include<fstream.h>//文件输入/输出#include<iomanip.h>//参数化输入/输出#include<iostream.h>//数据流输入/输出#include<limits.h>//定义各种数据类型最值常量#include<locale.h>//定义本地化函数#include<math.h>//定义数学函数#include<stdio.h>//定义输入/输出函数#include<stdlib.h>//定义杂项函数及内存分配函数#include<string.h>//字符串处理#include<strstrea.h>//基于数组的输入/输出#include<time.h>//定义关于时间的函数#include<wchar.h>//宽字符处理及输入/输出#include<wctype.h>//宽字符分类/******************************/标准C++(同上的不再注释)#include<algorithm>//STL通用算法#include<bitset>//STL位集容器#include<cctype>#include<cerrno>#include<clocale>#include<cmath>#include<complex>//复数类#include<cstdio>#include<cstdlib>#include<cstring>#include<ctime>#include<deque>//STL双端队列容器#include<exception>//异常处理类#include<fstream>#include<functional>//STL定义运算函数(代替运算符)#include<limits>#include<list>//STL线性列表容器#include<map>//STL映射容器#include<iomanip>#include<ios>//基本输入/输出支持#include<iosfwd>//输入/输出系统使用的前置声明#include<iostream>#include<istream>//基本输入流#include<ostream>//基本输出流#include<queue>//STL队列容器#include<set>//STL集合容器#include<sstream>//基于字符串的流#include<stack>//STL堆栈容器#include<stdexcept>//标准异常类#include<streambuf>//底层输入/输出支持#include<string>//字符串类#include<utility>//STL通用模板类#include<vector>//STL动态数组容器#include<cwchar>#include<cwctype>using namespace std;/******************************/C99增加#include<complex.h>//复数处理#include<fenv.h>//浮点环境#include<inttypes.h>//整数格式转换#include<stdbool.h>//布尔环境#include<stdint.h>//整型环境#include<tgmath.h>//通用类型数学宏/******************************/我的回答可能不是很好的.希望见谅啊.能力有限和碰巧遇到你的问题.哈哈哈.我要被人笑死的......如果有什么疑问,可以通过搜索引擎找找再问,毕竟那样可能会有很好的答案.#include<intrins.h>这个头文件主要是包含了有关51单片机的几条汇编语句的C语言调用接口,是直接编译成对应的汇编语句的。

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

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

C++文件操作详解〔ifstream、ofstream、fstream〕C++ 通过以下几个类支持文件的输入输出:•ofstream: 写操作〔输出〕的文件类(由ostream引申而来)•ifstream: 读操作〔输入〕的文件类(由istream引申而来)•fstream: 可同时读写操作的文件类(由iostream引申而来)翻开文件(Open a file)对这些类的一个对象所做的第一个操作通常就是将它和一个真正的文件联系起来,也就是说翻开一个文件。

被翻开的文件在程序中由一个流对象(stream object)来表示(这些类的一个实例) ,而对这个流对象所做的任何输入输出操作实际就是对该文件所做的操作。

要通过一个流对象翻开一个文件,我们使用它的成员函数open():void open (const char * filename, openmode mode);这里filename 是一个字符串,代表要翻开的文件名,mode 是以下标志符的一个组合:这些标识符可以被组合使用,中间以〞或〞操作符(|)间隔。

例如,如果我们想要以二进制方式翻开文件"example.bin" 来写入一些数据,我们可以通过以下方式调用成员函数open〔〕来实现:ofstream file;file.open ("example.bin", ios::out | ios::app | ios::binary);ofstream, ifstream 和fstream所有这些类的成员函数open 都包含了一个默认翻开文件的方式,这三个类的默认方式各不一样:只有当函数被调用时没有声明方式参数的情况下,默认值才会被采用。

如果函数被调用时声明了任何参数,默认值将被完全改写,而不会与调用参数组合。

由于对类ofstream, ifstream 和fstream 的对象所进展的第一个操作通常都是翻开文件,这些类都有一个构造函数可以直接调用open 函数,并拥有同样的参数。

fstream用法 read

fstream用法 read

fstream是C++标准库中用来进行文件输入输出的类,它提供了丰富的成员函数和操作符重载,能够很方便地进行文件的读写操作。

1. fstream类的定义和声明在使用fstream类之前,需要包含<fstream>头文件。

然后可以使用fstream类的对象来进行文件的打开、读写等操作。

2. 文件的打开和关闭可以使用fstream对象的open成员函数来打开文件,语法如下:```cppvoid open (const char* filename, ios::openmode mode);```filename为文件名,mode为打开文件的模式,包括in,out,ate,app等。

使用完文件后应当使用close()函数关闭文件。

3. 文件的读取使用ifstream类对象可以进行文件的读取操作。

可以使用`>>`操作符来逐个读取文件中的数据:```cppint num;ifstream inFile;inFile.open("data.txt");inFile >> num;```这里的data.txt是需要读取的文件名,num是用来存储读取到的数据的变量。

也可以使用getline函数来逐行读取文件中的内容:```cppstring line;ifstream inFile;inFile.open("data.txt");while (getline(inFile, line)){// 处理line}inFile.close();```4. 文件的写入使用ofstream类对象可以进行文件的写入操作。

可以使用`<<`操作符来向文件中逐个写入数据:```cppint num = 10;ofstream outFile;outFile.open("output.txt");outFile << num;```这里的output.txt是需要写入的文件名,num是需要写入文件中的数据。

课后题答案

课后题答案
9.在下面的do循环语句中,其循环体被执行的次数为( )。答案:A int i=0; do i++; while(i*i<10);//i=0,1,2,3 A. 4 B. 3 C. 5 D. 2
第四章单选题
1.在下面的一维数组定义中,( C )语句有语法错误。 A. int a[]={1,2,3}; B. int a[10]={0} ; C. int a[]; D. int a[5];
4.假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为( C )。 A. 2 B. 4 C. 6 D. 8、
第五章单选题
1.下面的( )函数头格式不正确。答案:D
A.AA(int a, int b) B.AA(int a, int b=0) C.AA(int a=0, int b=0) D.AA(int a=0, int b)
2.下面的( )保留字不能作为函数的返回类型。答案:C
A.void B.int C.new D.long
A. strlen() B. strcpy() C. strcat() D. strcmp()
第六章单选题
1.假定p是一个指向float型数据的指针,则p+1所指数据的地址比p所指数据的地址大( C )字节。 A.1 B.2 C.4 D.8
2.假定a为一个字符数组名,则元素a[8]相对于该数组首地址的字节地址为( )。答案:CB
A.1 B.2 C.4 D.5
11. 若用数组名作为函数调用的实参,传递给形参的是( )答案:A
A.数组的首地址 B.数组中第一个元素的值
C.数组全部元素的值 D.数组元素的个数

iostream与iostream.h的区别

iostream与iostream.h的区别

iostream与iostream.h的区别iostream 的意思是输入输出流直接点说就是in(输入) out(输出) stream(流)取in out 的首字母与stream 合成[编辑本段]C++语言中#include<iostream>是标准的C++头文件,任何符合标准的C++开发环境都有这个头文件。

在旧的标准C++中,使用#include<iostream.h>但在新标准中,用#include<iostream>,而且在VS中编程的同时要注意要添加:using namespace std;using namespace std详解一:<iostream>和<iostream.h>是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。

后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。

因此,当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现;当使用<iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout。

二:所谓namespace,是指标识符的各种可见范围。

C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。

由于namespace的概念,使用C++标准程序库的任何标识符时,可以有三种选择:1、直接指定标识符。

例如std::ostream而不是ostream。

完整语句如下:std::cout << std::hex << 3.4 << std::endl;2、使用using关键字。

fstream头文件用法

fstream头文件用法

fstream头文件用法fstream头文件是C++标准库中的一个头文件,用于处理文件输入输出操作。

它提供了三个类,ifstream(用于从文件中读取数据)、ofstream(用于向文件中写入数据)和 fstream(同时具有读写功能的文件操作类)。

要使用 fstream 头文件,首先需要包含它:C++。

#include <fstream>。

接下来,你可以使用这个头文件中定义的类来进行文件的读写操作。

首先,你需要创建一个文件流对象,并打开一个文件。

例如,如果你想要从文件中读取数据,你可以使用 ifstream 类:C++。

std::ifstream infile;infile.open("input.txt");这将打开一个名为 "input.txt" 的文件,使得你可以从中读取数据。

如果你想要向文件中写入数据,你可以使用 ofstream 类:C++。

std::ofstream outfile;outfile.open("output.txt");这将创建一个名为 "output.txt" 的文件,使得你可以向其中写入数据。

如果你需要同时进行读写操作,你可以使用 fstream 类: C++。

std::fstream file;file.open("data.txt");这将打开一个名为 "data.txt" 的文件,使得你可以进行读写操作。

一旦你打开了文件,你就可以使用流操作符(<< 和 >>)来进行数据的读写操作,就像你操作标准输入输出流一样。

例如,你可以用 << 操作符将数据写入文件,用 >> 操作符从文件中读取数据。

完成文件操作后,你应该关闭文件,以释放资源。

你可以使用close() 方法来关闭文件流:C++。

iostream与iostream.h的区别详细解析

iostream与iostream.h的区别详细解析

iostream与iostream.h的区别详细解析C++的标准类库被修订了两次,有两个标准 C92和C99,这两个库现在都在并⾏使⽤,⽤ .h 包含的是c92 ,不带 .h 的是c99的头⽂件,对于普通⽤户来说这两者没有什么区别,区别是在内部函数的具体实现上。

旧的C++头⽂件是官⽅明确反对使⽤的,但旧的C头⽂件则没有(以保持对C的兼容性)。

据说从 Visual C++ .NET 2003 开始,移除了旧的 iostream 库。

其实编译器制造商不会停⽌对客户现有软件提供⽀持,所以在可以预计的将来,旧的C++头⽂件还会嚣张⼀段时间。

如果能明⽩字符串头⽂件的使⽤,举⼀反三,其他的也差不多会⽤了:<string.h>是旧的C/C++头⽂件,对应的是基于char*的字符串处理函数;<string>是包装了std的C++头⽂件,对应的是新的strng类;<cstring>是对应旧的C头⽂件的std版本。

如果编译器都同时⽀持< iostream >和< iostream.h >,那使⽤#include < iostream >,得到的是置于名字空间std下的iostream 库的元素;如果使⽤#include < iostream.h >,得到的是置于全局空间的同样的元素。

在全局空间获取元素会导致名字冲突,⽽设计名字空间的初衷正是⽤来避免这种名字冲突的发⽣。

想象讯雷下载软件⼀样,先从服务器确定下载⽂件的⼤⼩,初始时即保存⽂件,全部填充0,多个线程下载数据直接写⼊⽂件,对⾃⼰线程负责下载的那段⽂件⽚的0进⾏改写,其中就涉及到⽂件共享写的操作vc7.1<fstream> 已经不⽀持 filebuf::sh_read等关键字,不知在vc7下若要⽤⽂件流来对⽂件进⾏⾮独占读和写操作该如何实现?⽽:vc6.0中的iostream.h <fstream.h>filebuf::sh_readfilebuf::sh_writefilebuf::sh_notefilebuf::sh_openprot⽆论⾃⼰是⽤vc6或者vc7的IDE当⽤到标准的输⼊输出和⽂件流时都是:include<iostream>include<fstream>using namespace std;A:include<iostream.h>include<fstream.h>B:include<iostream>include<fstream>如果⽤了<iostream>,则⼀定要引⼊命名空间,即"using namespace std;".如果⽤了<iostream.h>,则不那引⼊命名空间,否则会引起编译错误,提⽰找不到命名空间,例程如下://情况⼀:使⽤<iostream>和命名空间#include <iostream>using namespace std;int main(){cout<<"<iostream> need to use namespace std!/n";return 0;}输出:<iostream> need to use namespace std!Press any key to continue//情况⼆:使⽤<iostream.h>,不引⼊命名空间#include <iostream.h>//using namespace std;int main(){cout<<"<iostream> need to use namespace std!/n";return 0;}输出:<iostream> need to use namespace std!Press any key to continue//情况三:使⽤<iostream.h>,引⼊命名空间,这时候编译出错#include <iostream.h>using namespace std;int main(){cout<<"<iostream> need to use namespace std!/n";return 0;}编译错误信息:error C2871: 'std' : does not exist or is not a namespace从 Visual C++ .NET 2003 开始,移除了旧的 iostream 库。

计算机网络课程设计:(第三章)封装Ethernet帧(完整程序代码)

计算机网络课程设计:(第三章)封装Ethernet帧(完整程序代码)

计算机网络课程设计第二章:封装Ethernet帧完整程序:#include<iostream.h>#include<fstream.h>void main(int argc,char* argv[]){if(argc!=3){cout<<"Please input commmand: EncapFrame input_fileoutput_file"<<endl;return;}fstream file;file.open(argv[2],ios::in|ios::out|ios::binary|ios::trunc);for(int i=0;i<7;i++)file.put(char(0xaa));file.put(char(0xab));long pCrcS=file.tellp();chardst_addr[6]={char(0x00),char(0x00),char(0xe4),char(0x86),char(0x3a),char(0xdc)}; file.write(dst_addr,sizeof(dst_addr));charsrc_addr[6]={char(0x00),char(0x00),char(0x80),char(0x1a),char(0xe6),char(0x65)}; file.write(src_addr,sizeof(src_addr));ifstream infile;infile.open(argv[1],ios::binary);infile.seekg(0,ios::end);short length=(short)infile.tellg();file.put(char(length/256));file.put(char(length%256));char* data=new char[length];infile.seekg(0,ios::beg);infile.read(data,length);file.write(data,length);infile.close();delete data;if(length<46)for(int i=0;i<46-length;i++)file.put(char(0x00));long pCrc=file.tellp();file.put(char(0x00));short total=short(file.tellp())-(short)pCrcS;file.seekg(pCrcS,ios::beg);unsigned char crc=0;while(total--){unsigned char temp;file.get(temp);for(unsigned char i=(unsigned char)0x80;i>0;i>>=1){if(crc&0x80){crc<<=1;if(temp&i)crc^=0x01;crc^=0x07;}else{crc<<=1;if(temp&i)crc^=0x01;}}}file.seekp(pCrc,ios::beg);file.put(crc);file.seekg(0,ios::beg);cout<<"Content of ethernet frame: "<<endl;while(!file.eof()){unsigned char temp;file.get(temp);cout<<hex<<(short)temp<<" ";}cout<<endl<<"The"<<argv[2]<<" is completed";file.close();}结果:。

fstream和ifstream详细用法

fstream和ifstream详细用法

文件 I/O 在C++中比烤蛋糕简单多了。

在这篇文章里,我会详细解释ASCII和二进制文件的输入输出的每个细节,值得注意的是,所有这些都是用C++完成的。

一、ASCII 输出 为了使用下面的方法, 你必须包含头文件<fstream.h>(译者注:在标准C++中,已经使用<fstream>取代< fstream.h>,所有的C++标准头文件都是无后缀的。

)。

这是 <iostream.h>的一个扩展集, 提供有缓冲的文件输入输出操作. 事实上, <iostream.h> 已经被<fstream.h>包含了, 所以你不必包含所有这两个文件, 如果你想显式包含他们,那随便你。

我们从文件操作类的设计开始, 我会讲解如何进行ASCII I/O操作。

如果你猜是"fstream," 恭喜你答对了! 但这篇文章介绍的方法,我们分别使用"ifstream"?和 "ofstream" 来作输入输出。

如果你用过标准控制台流"cin"?和 "cout," 那现在的事情对你来说很简单。

我们现在开始讲输出部分,首先声明一个类对象。

ofstream fout; 这就可以了,不过你要打开一个文件的话, 必须像这样调用ofstream::open()。

fout.open("output.txt"); 你也可以把文件名作为构造参数来打开一个文件.ofstream fout("output.txt"); 这是我们使用的方法, 因为这样创建和打开一个文件看起来更简单. 顺便说一句, 如果你要打开的文件不存在,它会为你创建一个, 所以不用担心文件创建的问题. 现在就输出到文件,看起来和"cout"的操作很像。

qt中的fstream用法

qt中的fstream用法

qt中的fstream用法全文共四篇示例,供读者参考第一篇示例:Qt中的fstream是用于文件输入输出操作的类。

它可以实现对文件的读写操作,包括读取文件内容、写入文件内容、以及在文件中进行定位等功能。

在Qt中,fstream类提供了一种方便、灵活且高效的文件处理机制,使得我们可以轻松地实现对文件的操作。

在Qt中,我们可以通过fstream类来打开一个文件,并对其进行读写操作。

要使用fstream类,我们首先需要包含<fstream>头文件,然后就可以使用fstream类的实例来操作文件。

下面是一个简单的示例代码:```cpp#include <QFile>#include <QTextStream>QTextStream in(&file);while (!in.atEnd()) {QString line = in.readLine();qDebug() << line;}file.close();return 0;}```在这个示例中,我们首先创建了一个QFile对象,然后通过open()方法以只读文本模式打开了一个名为test.txt的文件。

接着我们创建了一个QTextStream对象in,它用来读取文件的内容。

通过while循环遍历文件的每一行,并使用readLine()方法读取每一行的内容并输出到控制台上。

最后通过close()方法关闭文件。

除了只读模式,我们还可以使用QIODevice::WriteOnly模式来以只写模式打开文件,并通过write()方法写入文件内容。

QIODevice类还提供了seek()方法用于在文件中进行定位,可以实现随机读写文件的功能。

Qt中的fstream类为文件操作提供了方便、高效和易用的接口,可以帮助我们轻松地实现对文件的读写操作。

通过熟练掌握fstream 类的用法,我们可以更加灵活地处理文件,提高程序的效率和性能。

fstream头文件3类的各功能

fstream头文件3类的各功能

1.ios::app ----写入的数据将被追加在文件的末尾,此方式使用ios::out2.ios::ate ----写入的数据将被追加在文件的末尾,此方式不使用ios::out但是我看不懂最后一句,什么叫使用和不使用“ios::out”呢??ios::out本身不是就是打开一个可写文件吗?既然都能追加写入了,还能不让写?1.1.ios::app ----写入的数据将被追加在文件的末尾,此方式使用ios::out2.ios::ate ----写入的数据将被追加在文件的末尾,此方式不使用ios::outios::app 多个线程或者进程对一个文件写的时候,假如文件原来的内容是abc,第一个线程(进程)往里面写了个d,第二个线程(进程)写了个e的话,结果是abcdeios:ate的话,后面写的回覆盖前面一个写的,还是上面那个例子的话(第二个后写)结果为abce 2.ofstream流,以ios::app打开(或者“ios::app|ios::out”),如果没有文件,那么生成空文件;如果有文件,那么在文件尾追加。

以ios::app|ios::in打开,不管有没有文件,都是失败。

以ios::ate打开(或者”ios::ate|ios::out”),如果没有文件,那么生成空文件;如果有文件,那么清空该文件以ios::ate|ios::in打开,如果没有文件,那么打开失败;如果有文件,那么定位到文件尾,并可以写文件,但是不能读文件ifstream流,以ios::app打开(“ios::app|ios::out”),不管有没有文件,打开都是失败。

以ios::ate打开(“ios::ate|ios::out”),如果没有文件,打开失败如果有文件,打开成功,并定位到文件尾,但是不能写文件fstream流,默认是ios::in,所以如果没有文件,ios::app和ios::ate都是失败,以ios::app|ios::out,如果没有文件则创建文件,如果有文件,则在文件尾追加以ios::ate|ios::out打开,如果没有文件则创建文件,如果有,则清空文件。

面向对象的程序设计_第三阶段练习

面向对象的程序设计_第三阶段练习

江南大学网络教育第三阶段练习题考试科目:《面向对象的程序设计》第章至第章(总分100分)__________学习中心(教学点)批次:层次:专业:学号:身份证号:姓名:得分:一单选题 (共8题,总分值8分,下列选项中有且仅有一个选项符合题目要求,请在答题卡上正确填涂。

)1. 在打开磁盘文件的访问方式常量中,(C )是以追加方式打开文件的。

(1 分)A. inB. outC. appD. ate2. catch(···)一般放在其他catch子句的后面,该子句的作用是(B )。

(1 分)A. 抛掷异常B. 捕获所有类型的异常C. 检测并处理异常D. 有语法错误3. 建立类模板对象的实例化过程为(C )。

(1 分)A. 基类-->派生类B. 构造函数-->对象C. 模板类-->对象D. 模板类-->模板函数4. 下列输出字符'A’的方法中,(B )是错误的。

(1 分)A. cout<<'A';B. cout<<put('A');C. cout. put('A');D. char= 'A' ;cout<<a;5. 使用控制符进行格式输出时,应包含(C )文件。

(1 分)A. iostream.hB. math.hC. iomanip.hD. fstream.h6. 下列选项中,用于清除基数格式位设置以八进制输出的语句是(C )。

(1 分)A. cout<<setf(ios :: dec ,ios :: basefield) ;B. cout<<setf(ios :: hex ,ios :: basefield) ;C. cout<<setf(ios :: oct ,ios :: basefield);D. cin>>setf(ios :: hex ,ios :: basefield);7. 假定已定义整型变量data,以二进制方式把data的值写人输出文件流对象outfile中去,正确的语句是(C )。

C语言头文件大全

C语言头文件大全

标准C语言头文件ISO C标准定义的头文件(24项)〈assert.h〉验证程序断言<complex.h〉支持复数算术运算〈ctype.h> 字符类型〈errno.h〉出错码〈fenv.h> 浮点环境〈float.h〉浮点常量〈inttypes.h> 整型格式转换<iso646。

h〉替代关系操作符宏<limits。

h〉实现常量〈locale。

h〉局部类别〈math.h〉数学常量<setjmp.h〉非局部goto 〈signal。

h〉信号<stdarg.h〉可变参数表〈stdbool。

h> 布尔类型和值<stddef。

h> 标准定义〈stdint。

h〉整型<stdio。

h> 标准I/O库<stdlib。

h> 实用程序库函数〈string。

h〉字符串操作<tgmath。

h> 通用类型数学宏〈time.h〉时间和日期〈wchar.h〉宽字符支持<wctype.h> 宽字符分类和映射支持POSIX标准定义的必须的头文件(26项)<dirent.h〉目录项〈fcntl.h〉文件控制<fnmatch。

h> 文件名匹配类型〈glob.h> 路径名模式匹配类型〈grp。

h> 组文件<netdb。

h〉网络数据库操作<pwd.h> 口令文件〈regex。

h〉正则表达式<tar。

h〉 tar归档值<termios.h> 终端I/O <unistd.h> 符号常量<utime.h〉文件时间<wordexp.h> 字扩展类型<arpa/inet.h> Internet定义<net/if。

h〉套接字本地接口<netinet/in。

h〉 Internet地址族 <netinet/tcp.h〉传输控制协议〈sys/mman.h> 内存管理声明〈sys/select.h〉 select函数<sys/socket.h> 套接字接口〈sys/stat.h〉文件状态<sys/times.h〉进程时间〈sys/types.h〉基本系统数据类型<sys/un.h> UNIX域套接字定义<sys/utsname。

源程序的输入及预处理实验报告

源程序的输入及预处理实验报告

实验报告一一、实验题目:源程序的输入及预处理二、实验目的:根据所学知识编写程序使其在预处理之后,将源程序中的注释与空格去掉,并将处理后的源程序输出。

三、实验内容:(1)源代码#include <fstream.h>#include <iostream.h>void pro_process(char *);void main( ) //测试驱动程序{//定义扫描缓冲区char buf[4048]={'\0'}; //缓冲区清0//调用预处理程序pro_process(buf);//在屏幕上显示扫描缓冲区的内容cout<<buf<<endl;}void pro_process(char *buf) //预处理程序{ifstream cinf("source.txt",ios::in);int i=0; //计数器char old_c='\0',cur_c; //前一个字符,当前字符。

bool in_comment=false; //false表示当前字符未处于注释中。

while(cinf.read(&cur_c,sizeof(char))){ //从文件读一个字符switch(in_comment){case false:if((old_c=='/' && cur_c=='*')||(old_c=='/' && cur_c=='/')){ //进入注释i--; //去除已存入扫描缓冲区的字符'/'in_comment=true;}else {if(old_c=='\\' && cur_c=='\n') //发现续行i--; //去除已存入扫描缓冲区的字符'\' else {if(cur_c>='A' && cur_c<='Z')//大写变小写cur_c+=32;if(cur_c =='\t' || cur_c =='\n') //空格取代TAB换行cur_c=' ';buf[i++]=cur_c ;}}break;case true:if((old_c=='*' && cur_c=='/')||cur_c=='\n') //离开注释in_comment=false;}//end of switchold_c= cur_c; //保留前一个字符}//end of whilebuf[i++]='#'; //在源程序尾部添加字符'#'}(2)、运行源代码,将源程序写入source.txt文本中。

fstream

fstream

2、析取器(>>)
从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表示从标准输入流中读取一个指定类型(即变量x的类型)的数据。
在C++中,对文件的操作是通过stream的子类fstream(file stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件fstream.h。下面就把此类的文件操作过程一一道来。
ios::beg: 文件开头
ios::cur: 文件当前位置
ios::end: 文件结尾
这两个函数一般用于二进制文件,因为文本文件会因为系统对字符的解释而可能与预想的值不同。
例:
file1.seekg(1234,ios::cur);//把文件的读指针从当前位置向后移1234个字节
write(const unsigned char *buf,int num);
read()从文件中读取 num 个字符到 buf 指向的缓存中,如果在还未读入 num 个字符时就到了文件尾,可以用成员函数 int gcount();来取得实际读取的字符数;而 write() 从buf 指向的缓存写 num 个字符到文件中,值得注意的是缓存的类型是 unsigned char *,有时可能需要类型转换。
ifstream file2("c:\pdos.def");//以输入方式打开文件
ofstream file3("c:\x.123");//以输出方式打开文件
所以,在实际应用中,根据需要的不同,选择不同的类来定义:如果想以输入方式打开,就用ifstream来定义;如果想以输出方式打开,就用ofstream来定义;如果想以输入/输出方式来打开,就用fstream来定义。

c++文件操作例题

c++文件操作例题

c++文件操作C++文件操作例题讲解:C++文件流:fstream// 文件流ifstream// 输入文件流ofstream// 输出文件流//创建一个文本文件并写入信息//同向屏幕上输出信息一样将信息输出至文件#include<iomanip.h>#include<fstream.h>void main(){ofstream f1("d:\\me.txt");//打开文件用于写,若文件不存在就创建它if(!f1)return;//打开文件失败则结束运行f1<<setw(20)<<"姓名:"<<"张三"<<endl;//使用插入运算符写文件内容f1<<setw(20)<<"家庭地址:"<<"河南郑州"<<endl;f1.close();//关闭文件}运行后打开文件d:\me.txt,其内容如下:姓名:张三家庭地址:河南郑州文件操作:打开文件文件名注意路径名中的斜杠要双写,如:"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联合使用ios::noreplace = 0x40,//文件存在时产生错误,常和out联合使用ios::binary= 0x80//二进制格式文件文件保护方式选择项:filebuf::openprot;//默认的兼容共享方式filebuf::sh_none;//独占,不共享filebuf::sh_read;//读共享filebuf::sh_write;//写共享打开文件的方法调用构造函数时指定文件名和打开模式ifstream f("d:\\12.txt",ios::nocreate);//默认以ios::in 的方式打开文件,文件不存在时操作失败ofstream f("d:\\12.txt");//默认以ios::out的方式打开文件fstream f("d:\\12.dat",ios::in|ios::out|ios::binary);//以读写方式打开二进制文件使用Open成员函数fstream f;f.open("d:\\12.txt",ios::out);//利用同一对象对多个文件进行操作时要用到open函数检查是否成功打开成功:if(f){...}//对ifstream、ofstream对象可用,fstream对象不可用。

C++实现FTP服务器

C++实现FTP服务器

准备工作VC6.0添加ws2_32.lib到工程,如下图操作:1.首先添加winsock库到工程2.添加lib库文件3.添加ws2_32.lib切记用空格隔开4.点击OK即可源代码:FTP_Client:#pragma comment( lib, "ws2_32.lib" )#include <Winsock2.h>#include <iostream.h>#include <stdio.h>#include <fstream.h>#include <string.h>#include <windows.h>#define TRAN_SUCCESS 1 //传输成功#define SOCK_WSA_ERR (-1) //启动winsock库失败#define SOCK_CRSOCK_ERR (-2) //创建套接字失败#define SOCK_BIND_ERR (-3) //绑定端口失败#define SOCK_LISTEN_ERR (-4) //监听失败#define SOCK_ACCEPT_ERR (-5) //等待连接失败#define SOCK_SEND_ERR (-6) //发送数据失败#define SOCK_CLOSE_ERR (-7) //关闭SOCKET失败#define SOCK_RECVE_ERR (-8) //接受数据失败#define SOCK_CONNECT_ERR (-10)#define FILE_ERR (-9) //文件错误#define Other_ERR (0) //其他不明原因#define SVR_PORT 6000 //服务器端口#define SEND_BUFFER_SIZE 4096 //每次发送大小#define RECV_BUFFER_SIZE 4096 //每次发送大小struct Fileinfo{char fileName[50]; //文件名int fileBlock; //文件分块大小int BlockNum; //文件块数量unsigned long fileSize; //文件总大小};int RecevData( SOCKET s );int Client(char* fileName);void PrintReturn(int nRet);int Client( char* strIP)//int Client()//int Client(char* fileName){int nResult = 0;//1、启动Winsock:对Winsock DLL进行初始化,协商Winsock的版本支持并分配必要的资源。

C头文件名大全

C头文件名大全

C头文件说明#include <assert.h> //设定插入点#include <ctype.h> //字符处理#include <errno.h> //定义错误码#include <float.h> //浮点数处理#include <fstream.h> //文件输入/输出#include <iomanip.h> //参数化输入/输出#include <iostream.h> //数据流输入/输出#include <limits.h> //定义各种数据类型最值常量#include <locale.h> //定义本地化函数#include <math.h> //定义数学函数#include <stdio.h> //定义输入/输出函数#include <stdlib.h> //定义杂项函数及内存分配函数#include <string.h> //字符串处理#include <strstrea.h> //基于数组的输入/输出#include <time.h> //定义关于时间的函数#include <wchar.h> //宽字符处理及输入/输出#include <wctype.h> //宽字符分类////////////////////////////////////////////////////////////////////////// 标准 C++ (同上的不再注释)#include <algorithm> //STL 通用算法#include <bitset> //STL 位集容器#include <cctype>#include <cerrno>#include <clocale>#include <cmath>#include <complex> //复数类#include <cstdio>#include <cstdlib>#include <cstring>#include <ctime>#include <deque> //STL 双端队列容器#include <exception> //异常处理类#include <fstream>#include <functional> //STL 定义运算函数(代替运算符)#include <limits>#include <list> //STL 线性列表容器#include <map> //STL 映射容器#include <iomanip>#include <ios> //基本输入/输出支持#include <iosfwd> //输入/输出系统使用的前置声明#include <iostream>#include <istream> //基本输入流#include <ostream> //基本输出流#include <queue> //STL 队列容器#include <set> //STL 集合容器#include <sstream> //基于字符串的流#include <stack> //STL 堆栈容器#include <stdexcept> //标准异常类#include <streambuf> //底层输入/输出支持#include <string> //字符串类#include <utility> //STL 通用模板类#include <vector> //STL 动态数组容器#include <cwchar>#include <cwctype>using namespace std;////////////////////////////////////////////////////////////////////////// C99 增加#include <complex.h> //复数处理#include <fenv.h> //浮点环境#include <inttypes.h> //整数格式转换#include <stdbool.h> //布尔环境#include <stdint.h> //整型环境#include <tgmath.h> //通用类型数学宏#include <assert.h> //设定插入点#include <ctype.h> //字符处理#include <errno.h> //定义错误码#include <float.h> //浮点数处理#include <fstream.h> //文件输入/输出#include <iomanip.h> //参数化输入/输出#include <iostream.h> //数据流输入/输出#include <limits.h> //定义各种数据类型最值常量#include <locale.h> //定义本地化函数#include <math.h> //定义数学函数#include <stdio.h> //定义输入/输出函数#include <stdlib.h> //定义杂项函数及内存分配函数#include <string.h> //字符串处理#include <strstrea.h> //基于数组的输入/输出#include <time.h> //定义关于时间的函数#include <wchar.h> //宽字符处理及输入/输出#include <wctype.h> //宽字符分类////////////////////////////////////////////////////////////////////////// 标准 C++ (同上的不再注释)#include <algorithm> //STL 通用算法#include <bitset> //STL 位集容器#include <cctype>#include <cerrno>#include <clocale>#include <cmath>#include <complex> //复数类#include <cstdio>#include <cstdlib>#include <cstring>#include <ctime>#include <deque> //STL 双端队列容器#include <exception> //异常处理类#include <fstream>#include <functional> //STL 定义运算函数(代替运算符)#include <limits>#include <list> //STL 线性列表容器#include <map> //STL 映射容器#include <iomanip>#include <ios> //基本输入/输出支持#include <iosfwd> //输入/输出系统使用的前置声明#include <iostream>#include <istream> //基本输入流#include <ostream> //基本输出流#include <queue> //STL 队列容器#include <set> //STL 集合容器#include <sstream> //基于字符串的流#include <stack> //STL 堆栈容器#include <stdexcept> //标准异常类#include <streambuf> //底层输入/输出支持#include <string> //字符串类#include <utility> //STL 通用模板类#include <vector> //STL 动态数组容器#include <cwchar>#include <cwctype>using namespace std;//////////////////////////////////////////////////////////////////////////C99 增加#include <complex.h> //复数处理#include <fenv.h> //浮点环境#include <inttypes.h> //整数格式转换#include <stdbool.h> //布尔环境#include <stdint.h> //整型环境#include <tgmath.h> //通用类型数学宏C/C++头文件一览,C++实例教程,C++系列教程,C++。

stream工具的stream.c文件详解

stream工具的stream.c文件详解

stream工具的stream.c文件详解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(是所有流式I/O类的基类)中定义,常用的值如下:ios::app:以追加的方式打开文件ios::ate:文件打开后定位到文件尾,ios:app就包含有此属性ios::binary:以二进制方式打开文件,缺省的方式是文本方式。

两种方式的区别见前文ios::in:文件以输入方式打开ios::out:文件以输出方式打开ios::nocreate:不建立文件,所以文件不存在时打开失败ios::noreplace:不覆盖文件,所以打开文件时如果文件存在失败。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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 <useoldio.h>
#endif // _MSC_VER
/* Define _CRTIMP */
#ifndef _CRTIMP
#ifdef _DLL
#define _CRTIMP __declspec(dllimport)
#else /* ndef _DLL */
#define _CRTIMP
#endif /* _DLL */
#endif /* _CRTIMP */
#include <iostream.h>
#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);
filebuf(filedesc, char *, int);
~filebuf();
filebuf* attach(filedesc);
filedesc fd() const { return (x_fd==-1) ? EOF : x_fd; }
int is_open() const { return (x_fd!=-1); }
filebuf* open(const char *, int, int = filebuf::openprot);
filebuf* close();
int setmode(int = filebuf::text);
virtual int overflow(int=EOF);
virtual int underflow();
virtual streambuf* setbuf(char *, int);
virtual streampos seekoff(streamoff, ios::seek_dir, int);
// virtual streampos seekpos(streampos, int);
virtual int sync();
private:
filedesc x_fd;
int x_fOpened;
};
class _CRTIMP ifstream : public istream {
public:
ifstream();
ifstream(const char *, int =ios::in, int = filebuf::openprot);
ifstream(filedesc);
ifstream(filedesc, char *, int);
~ifstream();
streambuf * setbuf(char *, int);
filebuf* rdbuf() const { return (filebuf*) ios::rdbuf(); }
void attach(filedesc);
filedesc fd() const { return rdbuf()->fd(); }
int is_open() const { return rdbuf()->is_open(); }
void open(const char *, int =ios::in, int = filebuf::openprot);
void close();
int setmode(int mode = filebuf::text) { return rdbuf()->setmode(mode); } };
class _CRTIMP ofstream : public ostream {
public:
ofstream();
ofstream(const char *, int =ios::out, int = filebuf::openprot);
ofstream(filedesc);
ofstream(filedesc, char *, int);
~ofstream();
streambuf * setbuf(char *, int);
filebuf* rdbuf() const { return (filebuf*) ios::rdbuf(); }
void attach(filedesc);
filedesc fd() const { return rdbuf()->fd(); }
int is_open() const { return rdbuf()->is_open(); }
void open(const char *, int =ios::out, int = filebuf::openprot);
void close();
int setmode(int mode = filebuf::text) { return rdbuf()->setmode(mode); } };
class _CRTIMP fstream : public iostream {
public:
fstream();
fstream(const char *, int, int = filebuf::openprot);
fstream(filedesc);
fstream(filedesc, char *, int);
~fstream();
streambuf * setbuf(char *, int);
filebuf* rdbuf() const { return (filebuf*) ostream::rdbuf(); }
void attach(filedesc);
filedesc fd() const { return rdbuf()->fd(); }
int is_open() const { return rdbuf()->is_open(); }
void open(const char *, int, int = filebuf::openprot);
void close();
int setmode(int mode = filebuf::text) { return rdbuf()->setmode(mode); } };
// manipulators to dynamically change file access mode (filebufs only)
inline ios& binary(ios& _fstrm) \
{ ((filebuf*)_fstrm.rdbuf())->setmode(filebuf::binary); return _fstrm; }
inline ios& text(ios& _fstrm) \
{ ((filebuf*)_fstrm.rdbuf())->setmode(filebuf::text); return _fstrm; }
#ifdef _MSC_VER
#pragma pack(pop)
#endif // _MSC_VER
#endif // _INC_FSTREAM
#endif /* __cplusplus */。

相关文档
最新文档