您的位置:首页 > 其它

文件操作:1入门

2015-02-01 13:18 162 查看
•1.概念:

  c++中,对文件的操作是通过stream的子类fstream(file stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件fstream.h

  fstream:可同时读写操作的文件类(由iostream引申而来)

  ofsteam:可操作(输出)的文件类(由ostream引申而来)

  ifstream:读操作(输入)的文件类(由istream引申而来)

•2.文件中数据的组织形式:

  文件可以分为:

  1.ASCII文件

      ASCII文件也称文本文件,其每个字节存一个ASCII代码,表示一个字符

      优点:便于对字符操作

      缺点:占用的存储空间较大、速度慢

  2.二进制文件

      把内存中的存储形式原样写到外存储器中

      优点:节省外存储空间和转换时间、速度快、便于存放中间结果

      缺点:一个字节不对应一个字符

  举例:int型数10000

      在内存存储形式0010 0111 0001 0000

      ASCII形式0011 0001 0011 0000 0011 0000 0011 0000 0011 0000

      二进制形式0010 0111 0001 0000(10000的二进制表示)

•3.打开文件:

  创建文件流对象:为了实现文件的输入输出,首先要创建一个文件流,把这个流和实际的文件相关联

 ofstream outfile;//建立一个输出文件流对象outfile

ifstream infile;//建立一个输入文件流对象infile

     注意:建立文件流对象要包含头文件:fstream.h

       补充:要通过一个流对象打开一个文件,要使用它的成员函数open()

          使用的语句:void open(const char *filename,openmode mode);//其中filename是要打开的文件名,mode是打开文件的方式

            打开文件的方式总结:

ios::app以追加方式打开文件
ios::ate文件打开后定位到文件尾
ios::binary以二进制方式打开文件,缺省的方式是文本
ios::in文件以输入方式打开(ifstream默认的)
ios::out文件以输出方式打开(ofstream默认)

ios::nocreate不建立文件,所以文件不存在时打开失败
ios::noreplace不覆盖文件,所以打开文件时如果文件存在,则失败
ios::trunc如果文件存在,把文件长度设置为0
               

    以上属性用"|"连接

     ofstream、ifstream、fstream所有这些类的成员函数open都包含了一个默认的打开文件的方式,如下表:

参数的默认方式
ofstreamios::out|ios::trunc
ifstreamios::in
fstreamios::i|ios::out
   

    当函数被调用时没有声明方式参数的情况下,默认值才会被采用。若被调用时声明了方式,默认值将被完全改写,不会与 参数组合。

    例如:以二进制输入方式打开文件c:\config.sys

    

    fstream file1;

    file1.open("c:\\config.sys",ios::binary|ios::in);

    说明:打开文件用于输入,并将这个文件与输入文件类对象infile建立联系,今后,在程序中,用到这个文件"config.sys"的地方用fiel1来代替。

    或者为:fstream file1("c:\\config.sys",ios::binary|ios::in);

        注意:若省略文件路径,默认为当前源文件目录下的文件。

          

    打开文件后,都要判断打开是否成功。

      若打开成功,文件流对象值为非零值

      若打开失败,则其值为0

      

      你可以通过调用成员函数is_open()来检查一个文件是否已经被顺利的打开了:

        bool is_open();

      它返回一个布尔(bool)值,为真(true)代表文件已经被顺利打开,假( false )则相反。

      示例:

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
const int num=255;
char temp1[num]={0};//初始化数组temp1
char temp2[num]={0};//初始化数组temp2
//① 输出数据到文件text.txt中
ofstream f_out("text.txt");
cout<<"请输入文本的内容:\n";
cin.getline(temp1,num,0);
int n=strlen(temp1);
temp1[n-1]='\0';
f_out<<temp1;
f_out.close();
//② 将文件text.txt中的内容重新读回屏幕上
ifstream f_in("text.txt");
f_in.getline(temp2,num,0);
cout<<temp2<<endl;
return 0;
}


View Code
啊哈哈哈,这篇博客真的好长,不过确实学到东西了,下面继续学习文件的操作~~

    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: