fstream用法
- 格式:doc
- 大小:22.50 KB
- 文档页数:6
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类还提供了其他常用操作,例如:复制文件、移动文件指针等。
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是需要写入文件中的数据。
fstream函数fstream函数是C++标准库中用于文件输入和输出的函数。
它是以面向对象的形式实现的,能够方便地读取和写入文本、二进制格式的文件。
下面我将为大家细分讲解fstream函数的使用。
一、头文件在使用fstream函数之前,我们需要引入头文件“fstream”,例如:#include <fstream>二、打开文件在进行文件读写操作之前,我们需要先打开文件。
可以使用fstream对象的“open”方法打开文件,方法中的参数包括文件名、打开模式等。
例如:ofstream outfile;outfile.open("file.txt", ios::out);以上代码即创建了一个ofstream对象outfile,并打开了名为“file.txt”的文件,模式为“ios::out”。
常用模式包括:• ios::in:打开文件用于读取;• ios::out:打开文件用于写入;• ios::trunc:打开文件并情况其中的内容;• ios::app:打开文件并将写入的内容追加到文件末尾。
三、文件读取读取文件时,我们需要使用ifstream对象的“getline”方法读取整行或“get”方法读取字符。
例如:ifstream infile;infile.open("file.txt", ios::in);string line;while (getline(infile, line)) {cout << line << endl;}infile.close();以上代码即创建了一个ifstream对象infile并打开了名为“file.txt”的文件,模式为“ios::in”。
随后使用while循环逐行读取文本数据,直到读到文件结束。
其中,getline方法会将文本行读取到一个string类型的变量line中,我们可以通过cout语句输出line的值来展现文件读取的过程。
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++。
c中文件流基本用法(fstream,ifstream,ostream)c++文件流基本用法(fstream,ifstream,ostream)前言:c++的文件流处理其实很简单,前提是你能够理解它。
文件流本质是利用了一个buffer中间层。
有点类似标准输出和标准输入一样。
c++IO的设计保证IO效率,同时又兼顾封装性和易用性。
本文将会讲述c++文件流的用法。
有错误和疏漏的地方,欢迎批评指证。
需要包含的头文件:名字空间:std也可以试用fstream提供了三个类,用来实现c++对文件的操作。
(文件的创建,读写)。
ifstream--从已有的文件读ofstream--向文件写内容fstream-打开文件供读写支持的文件类型实际上,文件类型可以分为两种:文本文件和二进制文件.文本文件保存的是可读的字符,而二进制文件保存的只是二进制数据。
利用二进制模式,你可以操作图像等文件。
用文本模式,你只能读写文本文件。
否则会报错。
例一:写文件声明一个ostream变量1.调用open方法,使其与一个文件关联2.写文件3.调用close方法.1.#include2.3.void main4.{5.ofstream file;6.7.file.open("file.txt");8.9.file<<"Hello file/n"<<75;10.11.file.close();12.}可以像试用cout一样试用操作符<<向文件写内容. Usages:1.2.file<<"string/n";3.file.put('c');例二:读文件1.声明一个ifstream变量.2.打开文件.3.从文件读数据4.关闭文件.1.#include2.3.void main4.{5.ifstream file;6.char output[100];7.int x;8.9.file.open("file.txt");10.11.file>>output;12.cout<<output;< p="">13.file>>x;14.cout<<x;< p="">15.16.file.close();17.}同样的,你也可以像cin一样使用>>来操作文件。
fstream流常用方法fstream流是一种用于读写文件的流模板类,它支持多种文件操作方法。
在C++中,我们可以通过fstream头文件来使用fstream类。
下面是fstream流常用的方法:1. 打开文件:使用open()方法可以打开指定的文件。
例如,我们可以使用以下代码来打开一个名为“example.txt”的文件:fstream file;file.open('example.txt', ios::out | ios::in);其中,ios::out表示文件以写入模式打开,ios::in表示文件以读取模式打开。
2. 写入文件:使用<<运算符或write()方法可以向文件中写入数据。
例如,我们可以使用以下代码向文件中写入一个字符串:file << 'Hello world!';或者使用write()方法:char data[] = 'Hello world!';file.write(data, sizeof(data));3. 读取文件:使用>>运算符或read()方法可以从文件中读取数据。
例如,我们可以使用以下代码从文件中读取一个字符串:string str;file >> str;或者使用read()方法:char data[100];file.read(data, sizeof(data));4. 关闭文件:使用close()方法可以关闭打开的文件。
例如,我们可以使用以下代码关闭文件:file.close();以上就是fstream流常用的方法。
通过这些方法,我们可以很方便地读写文件。
【转载】C++中文件流(fstream)的使用方法及示例(2011-08-22 16:00:14)转载▼分类:编程拾萃标签:杂谈C++文件流:fstream // 文件流ifstream // 输入文件流ofstream // 输出文件流头文件:#include <fstream>//创建一个文本文件并写入信息//同向屏幕上输出信息一样将信息输出至文件#include<iomanip.h>#include<fstream>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联合使用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对象不可用。
文件 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类来打开一个文件,并对其进行读写操作。
要使用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 类的用法,我们可以更加灵活地处理文件,提高程序的效率和性能。
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打开,如果没有文件则创建文件,如果有,则清空文件。
ofstream/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"的操作很像。
对不了解控制台输出"cout"的人, 这里有个例子。
int num = 150;char name[] = "John Doe";fout << "Here is a number: " << num << "\n";fout << "Now here is a string: " << name << "\n";现在保存文件,你必须关闭文件,或者回写文件缓冲. 文件关闭之后就不能再操作了, 所以只有在你不再操作这个文件的时候才调用它,它会自动保存文件。
回写缓冲区会在保持文件打开的情况下保存文件, 所以只要有必要就使用它。
回写看起来像另一次输出, 然后调用方法关闭。
像这样:fout << flush; fout.close();现在你用文本编辑器打开文件,内容看起来是这样:Here is a number: 150 Now here is a string: John Doe很简单吧! 现在继续文件输入, 需要一点技巧, 所以先确认你已经明白了流操作,对"<<" 和">>" 比较熟悉了, 因为你接下来还要用到他们。
继续…二、ASCII 输入输入和"cin" 流很像. 和刚刚讨论的输出流很像, 但你要考虑几件事情。
在我们开始复杂的内容之前, 先看一个文本:12 GameDev 15.45 L This is really awesome!为了打开这个文件,你必须创建一个in-stream对象,?像这样。
ifstream fin("input.txt");现在读入前四行. 你还记得怎么用"<<" 操作符往流里插入变量和符号吧?好,?在"<<" (插入)?操作符之后,是">>" (提取) 操作符. 使用方法是一样的. 看这个代码片段.int number;float real;char letter, word[8];fin >> number; fin >> word; fin >> real; fin >> letter;也可以把这四行读取文件的代码写为更简单的一行。
fin >> number >> word >> real >> letter;它是如何运作的呢? 文件的每个空白之后, ">>" 操作符会停止读取内容, 直到遇到另一个>>操作符. 因为我们读取的每一行都被换行符分割开(是空白字符), ">>" 操作符只把这一行的内容读入变量。
这就是这个代码也能正常工作的原因。
但是,可别忘了文件的最后一行。
This is really awesome!如果你想把整行读入一个char数组, 我们没办法用">>"?操作符,因为每个单词之间的空格(空白字符)会中止文件的读取。
为了验证:char sentence[101]; fin >> sentence;我们想包含整个句子, "This is really awesome!" 但是因为空白, 现在它只包含了"This". 很明显, 肯定有读取整行的方法, 它就是getline()。
这就是我们要做的。
fin.getline(sentence, 100);这是函数参数. 第一个参数显然是用来接受的char数组. 第二个参数是在遇到换行符之前,数组允许接受的最大元素数量. 现在我们得到了想要的结果:“This is really awesome!”。
你应该已经知道如何读取和写入ASCII文件了。
但我们还不能罢休,因为二进制文件还在等着我们。
三、二进制输入输出二进制文件会复杂一点, 但还是很简单的。
首先你要注意我们不再使用插入和提取操作符(译者注:<< 和>> 操作符). 你可以这么做,但它不会用二进制方式读写。
你必须使用read() 和write() 方法读取和写入二进制文件. 创建一个二进制文件, 看下一行。
ofstream fout("file.dat", ios::binary);这会以二进制方式打开文件, 而不是默认的ASCII模式。
首先从写入文件开始。
函数write() 有两个参数。
第一个是指向对象的char类型的指针, 第二个是对象的大小(译者注:字节数)。
为了说明,看例子。
int number = 30; fout.write((char *)(&number), sizeof(number));第一个参数写做"(char *)(&number)". 这是把一个整型变量转为char *指针。
如果你不理解,可以立刻翻阅C++的书籍,如果有必要的话。
第二个参数写作"sizeof(number)". sizeof() 返回对象大小的字节数. 就是这样!二进制文件最好的地方是可以在一行把一个结构写入文件。
如果说,你的结构有12个不同的成员。
用ASCII?文件,你不得不每次一条的写入所有成员。
但二进制文件替你做好了。
看这个。
struct OBJECT { int number; char letter; } obj;obj.number = 15;obj.letter = ‘M’;fout.write((char *)(&obj), sizeof(obj));这样就写入了整个结构! 接下来是输入. 输入也很简单,因为read()?函数的参数和write()是完全一样的, 使用方法也相同。
ifstream fin("file.dat", ios::binary); fin.read((char *)(&obj), sizeof(obj));我不多解释用法, 因为它和write()是完全相同的。
二进制文件比ASCII文件简单, 但有个缺点是无法用文本编辑器编辑。
接着, 我解释一下ifstream 和ofstream 对象的其他一些方法作为结束.四、更多方法我已经解释了ASCII文件和二进制文件, 这里是一些没有提及的底层方法。
检查文件你已经学会了open() 和close() 方法, 不过这里还有其它你可能用到的方法。
方法good() 返回一个布尔值,表示文件打开是否正确。
类似的,bad() 返回一个布尔值表示文件打开是否错误。
如果出错,就不要继续进一步的操作了。
最后一个检查的方法是fail(), 和bad()有点相似, 但没那么严重。
读文件方法get() 每次返回一个字符。
方法ignore(int,char) 跳过一定数量的某个字符, 但你必须传给它两个参数。
第一个是需要跳过的字符数。
第二个是一个字符, 当遇到的时候就会停止。
例子,fin.ignore(100, ‘\n’);会跳过100个字符,或者不足100的时候,跳过所有之前的字符,包括‘\n’。
方法peek() 返回文件中的下一个字符, 但并不实际读取它。
所以如果你用peek() 查看下一个字符,用get() 在peek()之后读取,会得到同一个字符, 然后移动文件计数器。
方法putback(char) 输入字符, 一次一个, 到流中。
我没有见到过它的使用,但这个函数确实存在。
写文件只有一个你可能会关注的方法.?那就是put(char), 它每次向输出流中写入一个字符。
打开文件当我们用这样的语法打开二进制文件:ofstream fout("file.dat", ios::binary);"ios::binary"是你提供的打开选项的额外标志. 默认的, 文件以ASCII方式打开, 不存在则创建, 存在就覆盖. 这里有些额外的标志用来改变选项。
ios::app 添加到文件尾ios::ate 把文件标志放在末尾而非起始。
ios::trunc 默认. 截断并覆写文件。
ios::nocreate 文件不存在也不创建。
ios::noreplace 文件存在则失败。
文件状态我用过的唯一一个状态函数是eof(), 它返回是否标志已经到了文件末尾。