C++ fstream的使用方法
- 格式:doc
- 大小:128.50 KB
- 文档页数:10
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类还提供了其他常用操作,例如:复制文件、移动文件指针等。
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是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是需要写入文件中的数据。
c++读写文件的几种方法
1.使用fstream库:可以通过fstream库中的fstream类实现文件的读写操作。
它提供了读写文件的基本操作,如打开文件、读取文件内容和写入数据等。
2. 使用cstdio库:可以使用C语言中的stdio.h头文件提供的函数,如fopen、fread和fwrite等实现文件的读写操作。
它适用于C和C++语言。
3. 使用iostream库:可以使用C++中的iostream头文件提供的类,如iostream、ifstream和ofstream等实现文件的读写操作。
这是一种比较简单且方便的文件读写方法。
4. 使用boost库:Boost库是一个流行的C++库,它提供了许多有用的函数和类来处理文件读写操作。
通过使用boost库,可以高效地读取和写入文件,提高文件操作的性能和效率。
5. 使用Qt库:Qt库是一个跨平台的C++库,它提供了大量的类和函数来处理文件的读写操作。
Qt库的优点是它可以直接读取和写入不同类型的文件,如文本文件、二进制文件和XML文件等。
- 1 -。
C语言中没有iostream这个库,iostream是C++中的输入输出流库。
如果您想在C++中使用iostream库,请使用以下代码:```C++#include <iostream>using namespace std;int main() {cout << "Hello, World!" << endl;return 0;}```在上面的代码中,`cout`和`endl`都是iostream库中的对象和函数。
`cout`用于输出信息到控制台,而`endl`则表示换行并刷新输出缓冲区。
您可以通过重载`<<`和`>>`运算符来实现自定义类型的输入输出操作。
例如,下面的代码可以实现自定义类型`Person`的输入输出:```C++#include <iostream>using namespace std;class Person {string name;int age;public:Person(string n, int a) : name(n), age(a) {}friend ostream& operator<<(ostream& os, const Person& p) {os << "Name: " << << ", Age: " << p.age << endl;return os;}friend istream& operator>>(istream& is, Person& p) {cout << "Enter name and age: ";is >> >> p.age;return is;}};int main() {Person p("John Doe", 25);cout << p;Person q("", 0);cin >> q;cout << q;return 0;}```在上面的代码中,我们使用了`friend`关键字来声明`operator<<`和`operator>>`为`Person`类的友元函数,这样就可以直接访问`Person`类的私有成员变量了。
ifstream读取二进制文件用法二进制文件是以二进制形式存储数据的文件,相比于文本文件,二进制文件能够更高效地存储和读取大量的数据。
在C++中,我们可以使用ifstream来读取二进制文件,并对其中的数据进行操作和处理。
本文将介绍如何使用ifstream来读取二进制文件,并提供一些常见的用法和技巧。
一、打开文件在使用ifstream读取二进制文件之前,首先需要打开要读取的文件。
可以使用open()函数来打开文件,语法如下:```cppifstream file;file.open("filename", ios::binary);```其中,"filename"表示要打开的文件名,可以是相对路径或绝对路径,ios::binary表示以二进制形式打开文件。
打开文件时,需要检查文件是否成功打开,可以使用is_open()函数来判断:```cppif (file.is_open()) {// 文件打开成功,进行读取操作} else {// 文件打开失败,处理错误}```二、读取数据打开文件之后,就可以使用ifstream对象的read()函数来读取数据了。
read()函数的语法如下:```cppchar* buffer = new char[size];file.read(buffer, size);```其中,buffer是用来存储读取数据的缓冲区,size是要读取的字节数。
需要注意的是,buffer的大小应该足够大,以容纳要读取的数据。
读取数据后,可以进行相应的操作和处理。
三、读取指定数据类型除了使用read()函数读取指定字节数的数据外,我们还可以使用ifstream对象的重载运算符来读取指定数据类型的数据。
下面是一些常用的重载运算符:1. 读取char类型数据:```cppchar ch;file >> ch;```2. 读取整数类型数据:```cppint num;file >> num;```3. 读取浮点数类型数据:```cppfloat num;file >> num;```四、读取整个文件有时候,我们希望一次性读取整个二进制文件的内容,可以使用ifstream对象的seekg()函数、tellg()函数和read()函数来实现。
今天终于弄明白怎样使用C++读写二进制文件了。
要读取文件必须包含<fstream>头文件,这里包含了C++读写文件的方法。
可以使用fstream类,这个类可以对文件进行读写操作。
1、打开文件。
打开文件可以有两种方式,第一种可以使用fstream类的构造函数。
fstream file("test.dat",ios_base::in|ios_base::out|ios_base::app); 另外一种方法就是使用open函数。
fstream file;file.open("test.dat",ios_base::in|ios_base::out|ios_base::app);这样就可以打开一个可读写的文件了。
如果文件不存在的话,就会创建一个新文件并且以读写方式打开。
这里需要说明一点,如果文件不存在的话,open函数中第二个参数必须包含ios_base::out|ios_base::app,否则就不能正确创建文件。
2、写文件。
先进性写文件的操作否则读一个空文件是没有意义的。
既然是写二进制文件可以向文件中写入一个整形值。
写二进制字符只能使用write函数。
但是write函数的原形是write(const char * ch, int size)。
第一个参数是char *类型,所以需要把将要写入文件的int类型转换成char *类型。
这里的转换困扰了我好几天,不过终于弄明白了。
代码如下。
int temp;file.write((char *)(&temp),sizeof(temp));3、读文件。
可以写文件了,读文件就好办多了。
读文件需要用到read函数。
其参数和write大致相同,read(const char * ch, int size)。
要把内容读到int类型变量中同样涉及到一个类型转换的问题。
和写文件一样。
int readInt;file.read((char *)(&readInt),sizeof(readInt));这样文件中的int值就读入到int型变量readInt中了。
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++中,有一个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// 注:现在C++标准库不支持nocreate和noreplace,以前的旧版本可以用.打开文件的属性取值是:0:普通文件,打开访问1:只读文件2:隐含文件4:系统文件可以用“或”或者“+”把以上属性连接起来,如3或1|2就是以只读和隐含属性文件。
c语言iostream用法-回复C语言中,"iostream"是C++语言中用来处理输入输出的库。
它包含一系列的类和函数,使得程序能够进行数据的输入和输出操作。
iostream库提供了丰富的功能,让用户能够方便地读取、写入和处理不同类型的数据。
在本文中,我们将一步一步回答有关C++中iostream库的用法。
1. 头文件包含iostream库位于C++的标准库中,所以在使用iostream之前,我们需要在程序中包含相应的头文件。
在C++中,我们使用如下的代码来包含iostream头文件:cpp#include <iostream>这一句代码告诉编译器,我们将使用iostream库中的类和函数。
2. 命名空间C++中的iostream库定义在`std`命名空间中,所以在使用iostream库中的类和函数时,我们需要带上命名空间前缀。
为了简化代码,我们可以使用`using`关键字将命名空间`std`引入到当前的作用域中,这样我们就可以直接使用iostream库中的类和函数了。
例如:cppusing namespace std;3. 标准输入输出iostream库提供了`cin`和`cout`这两个流对象,分别用于标准输入和标准输出的操作。
- 标准输入:我们可以使用`cin`对象从控制台读取用户输入的数据。
例如,我们可以使用下面的代码从用户处接收一个整数并将其存储在变量`num`中:cppint num;cin >> num;如果用户输入的是一个整数,那么它将被存储在`num`变量中。
如果用户输入的不是一个整数,那么`cin`对象将继续等待用户的输入,直到接收到一个合法的整数。
- 标准输出:我们可以使用`cout`对象向控制台输出数据。
例如,我们可以使用下面的代码将一个字符串输出到控制台上:cppcout << "Hello, world!" << endl;`endl`是一个特殊的控制字符,它表示换行。
文件 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"的操作很像。
在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream ,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结:这里主要是讨论fstream 的内容:[java] view plain copy print ?01. #i n c l u d e <f s t r e a m >02. o f s t r e a m //文件写操作 内存写入存储设备03. i f s t r e a m //文件读操作,存储设备读区到内存中04. f s t r e a m //读写操作,对打开的文件可进行读写操作1.打开文件在fstream 类中,成员函数open ()实现打开文件的操作,从而将数据流和文件进行关联,通过ofstream,ifstream,fstream 对象进行对文件的读写操作函数:open ()[cpp] view plain copy print ?01. <s p a n s t y l e ="f o n t f a m i l y :T i m e s N e w R o m a n ;f o n t s i z e :16p x ;">02. p u b l i c m e m b e r f u n c t i o n03.04. v o i d o p e n ( c o n s t c h a r * f i l e n a m e ,05. i o s _b a s e ::o p e n m o d e m o d e = i o s _b a s e ::i n | i o s _b a s e ::o u t );06.07. v o i d o p e n (c o n s t w c h a r _t *_F i l e n a m e ,08. i o s _b a s e ::o p e n m o d e m o d e = i o s _b a s e ::i n | i o s _b a s e ::o u t ,09. i n t p r o t = i o s _b a s e ::_O p e n p r o t );10.11. </s p a n > 参数: filename 操作文件名mode 打开文件的方式prot 打开文件的属性 //基本很少用到,在查看资料时,发现有两种方式打开文件的方式在ios 类(所以流式I/O 的基类)中定义,有如下几种方式:ios::in 为输入(读)而打开文件无法加载插件。
C/C++文件读写操作总结在编程的过程中,文件的操作是一个经常用到的问题,在C++Builder中,可以使用多种方法对文件操作:1、基于C++的文件操作;2、基于C的文件操作;基于C++的文件操作在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/Ostream这个类有两个重要的运算符: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:以二进制方式打开文件,缺省的方式是文本方式。
c++ ofstream用法C++中的ofstream是一个输出流,可以用于将数据写入到文件中。
在这篇文章中,我们将会详细介绍如何使用ofstream。
1. ofstream基本用法先来看一下ofstream的初始化以及写入的基本用法:```c++#include <fstream>{std::ofstream ofs("demo.txt");ofs << "Hello, World!\n";return 0;}```这个例子中,我们首先创建了一个ofstream对象和要写入的文件名("demo.txt")。
然后,我们使用“<<”运算符向文件中写入一些文本。
当程序执行结束时,自动关闭文件。
2. 文件模式ofstream流可以打开文件的多种模式,这些模式对于不同的文件使用情况可以选择不同的打开方式。
以下是一些常用模式:- ios::out:打开文件用于写入,如果文件不存在则创建文件。
- ios::app:打开文件用于追加写入,如果文件不存在则创建文件。
- ios::binary:以二进制方式打开文件。
- ios::trunc:如果文件已经存在,则在打开文件之前清空文件内容。
对于以上模式,我们可以将它们组合使用,比如:```c++ofs.open("demo.txt", std::ios::out | std::ios::trunc); // 打开文件并清空内容```3. 写入各种基本类型数据除了写入文本外,我们还可以通过ofstream流将各种基本类型数据打印输出到文件中。
以下是一些常见的例子:```c++#include <iostream>#include <fstream>{// 打开文件std::ofstream ofs("demo.txt");// 数值类型int i = 123;ofs << i << std::endl;float f = 3.14f;ofs << f << std::endl;double d = 3.1415926;ofs << d << std::endl;long long ll = 123456789;ofs << ll << std::endl;// 字符类型char c = 'A';ofs << c << std::endl;std::string str = "Hello,World!";ofs << str << std::endl;// 关闭文件ofs.close();return 0;}```在这个例子中,我们首先打开了文件。
cin和cout的⽤法(头⽂件是iostream)
⼀:标准输⼊函数cin
它是代表标准的输⼊设备--键盘,它是属于流的,他的⽤法和流的⽤法是⼀样的。
也就是:cin>>变量; 输⼊多个变量可以写在⼀⾏,
如:cin>>x>>y>>z; 这样写不好看,⼀般在输⼊语句的前⾯,都要做⼀个提⽰,”请输⼊×××”。
另外,这个函数是不⽤带地址符号"&"的,也不⽤写明变量类型,千万不要跟scanf混淆。
当然也不检查变量输⼊是否合法。
如:
int i;
cout<<"please input a number:"
cin>>i;
cout<<"i="<<i<<endl;
如果你输⼊的是⼀个字符如'a'那么他也不检查,但你输出的结果不是正确的,这要⼿⼯进⾏检查。
当然他也跟scanf⼀样,如果在循环内部输⼊不合法的变量值,那么也将陷⼊死循环。
如下:
/*⼀个输⼊不合法变量陷⼊死循环的例⼦*/
endl是中的操控器(Manipulator),包含于<iostream>(<iostream>),(namespace):std。
注意endl(为字母l)⽽⾮end1(数字1)。
意思:⼀⾏输出结束,然后输出下⼀⾏ 全称:end of line
endl英语意思是end of line,即⼀⾏输出结束,然后输出下⼀⾏。
。
今天终于弄明白怎样使用C++读写二进制文件了。
要读取文件必须包含<fstream>头文件,这里包含了C++读写文件的方法。
可以使用fstream类,这个类可以对文件进行读写操作。
1、打开文件。
打开文件可以有两种方式,第一种可以使用fstream类的构造函数。
fstream file("test.dat",ios_base::in|ios_base::out|ios_base::app); 另外一种方法就是使用open函数。
fstream file;file.open("test.dat",ios_base::in|ios_base::out|ios_base::app);这样就可以打开一个可读写的文件了。
如果文件不存在的话,就会创建一个新文件并且以读写方式打开。
这里需要说明一点,如果文件不存在的话,open函数中第二个参数必须包含ios_base::out|ios_base::app,否则就不能正确创建文件。
2、写文件。
先进性写文件的操作否则读一个空文件是没有意义的。
既然是写二进制文件可以向文件中写入一个整形值。
写二进制字符只能使用write函数。
但是write函数的原形是write(const char * ch, int size)。
第一个参数是char *类型,所以需要把将要写入文件的int类型转换成char *类型。
这里的转换困扰了我好几天,不过终于弄明白了。
代码如下。
int temp;file.write((char *)(&temp),sizeof(temp));3、读文件。
可以写文件了,读文件就好办多了。
读文件需要用到read函数。
其参数和write大致相同,read(const char * ch, int size)。
要把内容读到int类型变量中同样涉及到一个类型转换的问题。
和写文件一样。
int readInt;file.read((char *)(&readInt),sizeof(readInt));这样文件中的int值就读入到int型变量readInt中了。
c++ fstream 使用(一)2009-07-14 10:37(1)基本使用1、包含的头文件#include <fstream>using namespace std;1)C++中的三个文件流ofstream ofs("文件名", 打开方式);ifstream ifs("文件名", 打开方式);fstream fs("文件名",输入打开方式| 输出打开方式);三种文件流分别用于写文件、读文件、读写文件三种文件流都可先定义,再打开文件,以fstream为例fstream fs;fs.open("文件名", 输入打开方式| 输出打开方式);其中“打开方式”可以不给出。
若不给出,对于oftream默认为ios::out,iftream默认为ios::in2)打开方式ios::out 输出数据覆盖现有文件ios::app 输出数据填加之现有文件末尾ios::ate 打开文件并移动文件指针至末尾ios::in 打开文件以输入ios::trunc 输出文件中现有内容(ios::out的默认操作)ios::binary 二进制打开供读写2、文件指针和C的文件操作方式不同的是,C++ I/O系统管理两个与一个文件相联系的指针。
一个是读指针,它说明输入操作在文件中的位置;另一个是写指针,它下次写操作的位置。
每次执行输入或输出时,相应的指针自动变化。
所以,C++的文件定位分为读位置和写位置的定位,对应的成员函数是 seekg()和 seekp(),seekg()是设置读位置,seekp是设置写位置。
它们最通用的形式如下:istream &seekg(streamoff offset,seek_dir origin);ostream &seekp(streamoff offset,seek_dir origin);streamoff定义于 iostream.h 中,定义有偏移量 offset 所能取得的最大值,seek_dir 表示移动的基准位置,是一个有以下值的枚举:ios::beg:文件开头ios::cur:文件当前位置ios::end:文件结尾这两个函数一般用于二进制文件,因为文本文件会因为系统对字符的解释而可能与预想的值不同。
例:file1.seekg(1234,ios::cur);//把文件的读指针从当前位置向后移1234个字节file2.seekp(1234,ios::beg);//把文件的写指针从文件开头向后移1234个字节file1.seekg(-128,ios::end); //把文件的读指针从文件末尾向前移128个字节(注意偏移量用负数。
靠,这么特殊的情况,网上一群傻逼都不写。
)c++ fstream 使用(二)2008-10-01 23:53(2)使用getline和ifstream读取文件假设有一个叫data.txt的文件, 它包含以下内容:Fry: One Jillion dollars.[Everyone gasps.]Auctioneer: Sir, that's not a num ber.数据读取,测试。
以下就是基于data.txt 的数据读取操作:#include <iostream>#include <fstream>#include <string>using namespace std;//输出空行void OutPutAnEmptyLine(){cout<<"\n";}//读取方式: 逐词读取, 词之间用空格区分//read data from the file, W ord B y W ord//when used in this manner, we'll get space-delimited bits of text from the file//but all of the whitespace that separated words (including newlines) was lost.void ReadDataFromFileWBW(){ifstream fin("data.txt");string s;while( fin >> s ){cout <<"Read from file: " << s << endl;}}//读取方式: 逐行读取, 将行读入字符数组, 行之间用回车换行区分//If we were interested in preserving whitespace,//we could read the file in L ine-B y-L ine using the I/O getline() function.void ReadDataFromFileLBLIntoCharArray(){ifstream fin("data.txt");const int LINE_LENGT H =100;char str[LINE_LENGT H];while( fin.getline(str,LINE_LENGTH) ){cout <<"Read from file: " << str << endl;}}//读取方式: 逐行读取, 将行读入字符串, 行之间用回车换行区分//If you want to avoid reading into character arrays,//you can use the C++ string getline() function to read lines into stringsvoid ReadDataFromFileLBLIntoString(){ifstream fin("data.txt");string s;while( getline(fin,s) ){cout <<"Read from file: " << s << endl;}}//带错误检测的读取方式//Simply evaluating an I/O object in a boolean context will return false//if any errors have occurredvoid ReadDataWithErrChecking(){string filename ="dataFUNNY.txt";ifstream fin( filename.c_str());if( !fin ){cout <<"Error opening " << filename <<" for input" << endl;exit(-1);}}int m ain(){ReadDataFromFileWBW(); //逐词读入字符串OutPutAnEmptyLine(); //输出空行ReadDataFromFileLBLIntoCharArray(); //逐词读入字符数组OutPutAnEmptyLine(); //输出空行ReadDataFromFileLBLIntoString(); //逐词读入字符串OutPutAnEmptyLine(); //输出空行ReadDataWithErrChecking(); //带检测的读取return0;}输出结果为:Read from file: Fry:Read from file: OneRead from file: JillionRead from file: dollars.Read from file: [EveryoneRead from file: gasps.]Read from file: Auctioneer:Read from file: Sir,Read from file: that'sRead from file: notRead from file: aRead from file: number.Read from file: 数据读取,Read from file: 测试Read from file: 。
Read from file: Fry: One Jillion dollars.Read from file: [Everyone gasps.]Read from file: Auctioneer: Sir, that's not a number.Read from file: 数据读取,测试。
Read from file: Fry: One Jillion dollars.Read from file: [Everyone gasps.]Read from file: Auctioneer: Sir, that's not a number.Read from file: 数据读取,测试。
Error opening dataFUNNY.txt for inputPress any key to continueC++中ifstream、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。