小结:文件输入和输出

本文介绍了C++中如何进行文件的读写操作,包括创建ofstream和ifstream对象,关联文件,使用cout和cin进行文件内容的写入和读取。通过示例说明了如何检查文件打开状态,并详细阐述了文件模式的使用,如in、out、ate、trunc和binary等。还提到了fstream类中的seekg()和seekp()方法用于在文件中移动指针。

          一.C++中,要让程序写入文件,应该要:1.创建ofstream对象;2.将该对象与目标文件关联起来;3.使用cout输出到文件中。

            同理,读取文件的过程与写入相似:1.创建ifstream对象;2.将该对象与目标文件关联起来;3.使用cin输出到文件中。

            以写入文件过程为例,以下是一个简单的例子:

                       ofstream  fout("aa.tst");                              //创建ofstream对象,并与aa文件关联;

                        fout<<"Hellow World";                                 //使用cout输出aa.txt到文件

             要断开与文件的连接,可以使用close()显式的关闭连接而不删除流。

以下有两个例子:


#include  // not needed for many systems
#include 
#include 

int main()
{
    using namespace std;
    string filename;


    cout << "Enter name for new file: ";
    cin >> filename;
    ofstream fout(filename.c_str());   //将fout关联到目标(新建)文件,或者可以用fout.open(文件名)建立关联

    fout << "C++";        // 输出到文件
    cout << "Enter your message: ";   // 显示信息
    string mes;
    cin >> mes;
    fout << "Your messager is " << mes << endl;
    fout.close();           // 关闭文件

    ifstream fin(filename.c_str());
    cout << "Here are the contents of " << filename << ":\n";
    char ch;
    while (fin.get(ch))     //从文件 读取
         cout << ch;         // 显示文件中的信息
    cout << "Done\n";
    fin.close();
    return 0; 
}


输入与结果:



另一个例子:


#include 
#include 
using namespace std;
int main()
{
    char temp[25]={0};
    ifstream fin( "123.txt" );
    ofstream fout( "124.txt");
    fin>>temp;
    fout<

我先在123文件中写入"Hellow World",运行程序后,456也写入了"Hellow World"。

从这个例子可以注意到,fin关联到123文件,执行fin>>temp,时实际上是对123文件的读取并保存到temp中,同理因为 fout 关联到456文件,fout<<temp时将temp中的字符串输出到456文件中并保存.所以我是这样理解的,istream对象的作用是“将内容读入到其它对象",而ostream对象的作用是”将对象输出保存到文件“,前提是两种对象都已经关联到文件。


         二.报告流状态,通过检查流状态来判断一个流操作是否成功,也就是文件是否成功打开。有以下常见方式(fin为ifstream对象):

              fin.open("aa.txt");

              f(fin.fail());

              if(!fin);

              if((!fin.good());

              if(!fin.is_open())  

                              

              其中以最后一种最佳。

         三.当要依次处理一组文件的时候,可以先声明一个istream对象并使用open()方法与文件关联 ,注意声明时不要初始化该对象。之后是对文件的处理,并在最后使用依次closse()和clear()方法 ,才能够将该istream对象重新关联到另一文件。

         关于文件模式:将流与文件关联时可以提供指定文件模式的第二个参数。常见文件模式有in(打开文件以读取),out(打开文件以写入),ate(打开文件并移到文件尾),trunc(打开文件并截断文件,清空已存在的文件流),binary(以二进制模式进行IO操作)。这些文件模式均在ios_base类中定义。格式如下:

                                    ifstream fin(文件名,文件模式);      //多种文件模式可以用“|”符号隔开合并在一起。

         四.另外,fstream类为了在文件中移动添加两种方法:seekg()和seekp()。seekg将输入指针移到指定的文件位置,seekp()讲输出指针移到指定的位置。

                     

                        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值