C++文件操作:打开文件和写入文件 zz

http://www.weixueyuan.net/view/5825.html

如果程序的运行结果仅仅显示在屏幕上,当要再次查看结果时,必须将程序重新运行一遍;而且,这个结果也不能被保留。

如果希望程序的运行结果能够永久保留下来,供随时查阅或取用,则需要将其保存在文件中。

文件分类

外部文件和内部文件

  1. 外部文件:指磁盘文件,也是通常所谓的文件。
  2. 内部文件:指在程序中运行的文件,更正式的称谓是“文件流对象”。
  3. 程序中操作的是内部文件,最后保存的是外部文件。

文本文件和二进制文件

  1. 文本文件:由字符序列组成,以字符(character) 为存取最小信息单位,也称“ASCII码文件”。
  2. 二进制文件:由二进制数组成。

使用过程

本节只讨论文本文件的使用方法和操作过程及其简单应用。

使用文本文件的过程是固定的,一般步骤如下:
(1) 打开一个文件,使磁盘文件和文件流对象建立联系;
(2) 将数据按文本方式写入一个文件,就如同cout用于向显示器送数据。以后可从这个文件读取数据,就如同cin用于键盘输入。
(3) 当不再使用文件时,要关闭文件,此时文件将从缓冲区中完全写回磁盘。这样,可以永久保存数据。

操作步骤

1.说明一个文件流对象(内部文件)。
例如:
    ifstream ifile;     //说明输入文件流对象ifile
    ofstream ofile;     //说明输出文件流对象ofile

说明:

  • 文件流类型ifstream支持从输入文件中提取数据的操作。
  • 文件流类型ofstream完成数据写入输出文件中的各种操作。
  • ifile是输入文件流对象,用于读;ofile是输出文件流对象,用于写。

2.打开文件,在文件流对象和磁盘文件之间建立联系。
例如:
    ifile.open( "d:\\my_in_file.txt" );
    ofile.open( "d:\\my_out_file.txt" );

说明:

  • 双引号中的字符串(如"d:\\my_in_file.txt" )为磁盘文件路径名。
  • 通过输入文件流对象(如ifile)或输出文件流对象(如ofile)打开指定磁盘文件,将在文件流对象和磁盘文件之间建立联系。
  • 输入/输出文件流对象都被称为“内部文件”,即和对应磁盘文件联系的“虚文件”。

3.对文件进行读写操作。

  • 文件读写在文件缓冲区中进行。
  • 最常见的文件读写是顺序的,即从文件头开始进行。
  • 顺序读写可用C++的提取运算符(>>)和插入运算符(<<)进行;也可以用读字符的get()和读字符串的getline()等函数进行。

4.关闭文件。

文件操作结束后,应该显式地关闭该文件,与打开文件相对应,例如:
    ifile.close();
    ofile.close();

关闭文件时,系统把与该文件相关联的文件缓冲区中的数据写到磁盘文件中,保证文件的完整;同时把磁盘文件名与文件流对象之间的关联断开,可防止误操作修改了磁盘文件。

应用举例

【例2.25】将百鸡问题计算结果存入文件。
#include<fstream>
#include<iomanip>
using namespace std;
int main(){
    int i,j,k;
    ofstream ofile;               //定义输出文件
    ofile.open("d:\\myfile.txt");     //作为输出文件打开
    ofile<<"   公鸡      母鸡      小鸡"<<endl;   //标题写入文件
    for(i=0;i<=20;i++)
        for(j=0;j<=33;j++){
            k=100-i-j;
            if((5*i+3*j+k/3==100)&&(k%3==0))            //注意(k%3==0)非常重要
            ofile<<setw(6)<<i<<setw(10)<<j<<setw(10)<<k<<endl;   //数据写入文件
        }
    ofile.close();                //关闭文件
    return 0;
}

【例2.26】读出存放百鸡问题计算结果的文件。
#include<fstream>
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
    char a[28];
    ifstream ifile;               //定义输入文件
    ifile.open("d:\\myfile.txt");     //作为输入文件打开
    int i=0,j,k;
    while(ifile.get(a[i])){      //读标题,请对比cin.get(),不可用>>,它不能读白字符
        if(a[i]==‘\n‘) break;
        i++;
    }
    a[i]=‘\0‘;
    cout<<a<<endl;
    while(1){
        ifile>>i>>j>>k;                                 //由文件读入数据
        if(ifile.eof()!=0) break;            //当读到文件结束时,ifile.eof()为真
        cout<<setw(6)<<i<<setw(10)<<j<<setw(10)<<k<<endl;     //屏幕显示       
    }
    ifile.close();                 //关闭文件
    return 0;
}

重要提示

    • 操作步骤的第1、2步可以合并为1步,即说明文件流对象的同时打开对应的磁盘文件。例如:
          ifstream ifile( "d:\\my_in_file.txt" );  //说明输入文件流对象ifile并打开文件
          ofstream ofile( "d:\\my_out_file.txt" );//说明输出文件流对象ofile并打开文件
    • 打开文件时,如磁盘文件不存在,会自动建立文件,但指定目录必须存在,否则建立文件失败。
    • 计算机将外部设备也作为文件进行管理。例如:键盘和显示器是标准的输入输出文件,其文件名分别为cin和cout。
    • 磁盘文件操作与键盘、显示器操作非常相似。例题中用输出文件流对象(如ofile)代替cout,输入文件流对象(如ifile)代替cin,数据的去向和来源则由显示器和键盘变为磁盘文件。
    • 对文件进行操作,必须在程序前增加一句: #include<fstream>
时间: 2024-10-23 03:42:56

C++文件操作:打开文件和写入文件 zz的相关文章

Python文件操作:文件的打开关闭读取写入

Python文件操作:文件的打开关闭读取写入 一.文件的打开关闭 Python能以文本和二进制两种方式处理文件,本文主要讨论在Python3中文本文件的操作. 文件操作都分为以下几个步骤: 1.打开文件. 2.操作文件:读/写. 3.关闭文件. 操作系统中的文件默认处于存储状态,读写文件时需要请求操作系统打开一个要在当前程序操作的对象,打开不存在的文件可以创建文件.open()方法通过接收"文件路径"以及“文件打开模式”等参数来打开一个文件,并且返回文件对象.打开后的文件只能在当前程序

Windows phone开发之文件夹与文件操作系列(一)文件夹与文件操作

Windows phone7中文件的存储模式是独立的,即独立存储空间(IsolatedStorage).对文件夹与文件操作,需要借助IsolatedStorageFile类. IsolatedStorageFile提供了对独立存储的空间获取,文件夹的删除.移动,文件的创建.删除等IO操作. 在Windows phone7中对文件的操作,都需要引入命名空间System.IO.IsolatedStorage和System.IO. 在System.IO.IsolatedStorage 命名空间下有以下

17 文件的打开模式,和文件对象的方法 (转)

文件打开模式 打开模式 执行操作 'r' 以只读方式打开文件(默认) 'w' 以写入的方式打开文件,会覆盖已存在的文件 'x' 如果文件已经存在,使用此模式打开将引发异常 'a' 以写入模式打开,如果文件存在,则在末尾追加写入 'b' 以二进制模式打开文件 't' 以文本模式打开(默认) '+' 可读写模式(可添加到其他模式中使用) 'U' 通用换行符支持 文件对象方法 文件对象方法 执行操作 f.close() 关闭文件 f.read([size=-1]) 从文件读取size个字符,当未给定s

Python学习笔记八:文件操作(续),文件编码与解码,函数,递归,函数式编程介绍,高阶函数

文件操作(续) 获得文件句柄位置,f.tell(),从0开始,按字符数计数 f.read(5),读取5个字符 返回文件句柄到某位置,f.seek(0) 文件在编辑过程中改变编码,f.detech() 获取文件编码,f.encoding() 获取文件在内存中的编号,f.fileno() 获取文件终端类型(tty.打印机等),f.isatty() 获取文件名,f.name() 判断文件句柄是否可移动(tty等不可移动),f.seekable() 判断文件是否可读,f.readable() 判断文件是

c语言文件操作常用函数及读写文件代码举列

文件操作常用函数 fopen() 打开流 fclose() 关闭流 fputc() 写一个字符到流中 fgetc() 从流中读一个字符 fseek() 在流中定位到指定的字符 fputs() 写字符串到流 fgets() 从流中读一行或指定个字符 fprintf() 按格式输出到流 fscanf() 从流中按格式读取 feof() 到达文件尾时返回真值 ferror() 发生错误时返回其值 rewind() 复位文件定位器到文件开始处 remove() 删除文件 fread() 从流中读指定个数

C语言中的文件操作(2)---标准I/O文件操作

在上一篇文章中,我们初步了解了freopen()函数的用法.但在一些算法竞赛中不允许使用文件重定向操作,这时我们就只能用标准C头文件stdio.h中的fopen()函数进行对文件的读写了. fopen()函数的不足之处就在于使用的方法复杂,写起来比较麻烦.但是它灵活度比freopen()要高得多,比如支持多文件同时读写等等. 实现方法:在main函数之前定义一个类型为FILE*的指针,并使它指向创建的文件. FILE* fp1 = fopen("D:\\abc.in", "r

PHP中文件操作(2)-- 写文件

1.fread - 读取文件(可安全用于二进制文件) 语法:string fread ( int $handle , int $length ) $filename = "aa.txt"; $fp = fopen($filename, "a"); $con = "\r\n你好"; //循环写入 for ($i=0; $i <5; $i++) { //写入 fwrite($fp, $con); } fclose($fp); 结果: 2.fil

PHP关于文件与文件夹(1) 写入文件 文件权限 三、锁定文件

一.文件权限 总之中的一个切都是为了保证文件夹的安全,保证文件夹的安全比保证文件的安全更重要. 二.写入文件 file_put_contents($file,$data);  //假设没有的话会创建.有的话覆盖原文件: file_put_contents($file,$data,FILE_APPEND); //没的话会创建,有的话追加在后面: file_put_contents($file,$data.PHP_EOL,FILE_APPEND);//有换行 [样例]: <!DOCTYPE html

php文件怎么打开 如何执行php文件

什么是php: PHP,是英文超级文本预处理语言Hypertext Preprocessor的缩写.PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,被广泛的运用. php就是网络上大家常说的后台,用来处理数据库等,很多网站都是用php写的,包括www.baidu.com,www.jb51.net等网站,都是使用php语言写的.我们的文章都是通过php代码上传到服务器数据库中,然后通过php代码生成静态的. php文件如何打开:

php文件操作打开模式

打开模式 说   明 r 只读方式打开,将文件指针指向文件头. r+ 读写方式打开,将文件指针指向文件头. w 只写方式打开,将文件指针指向文件头并将文件大小截为零. 如果文件不存在则尝试创建之. w+ 读写方式打开,将文件指针指向文件头并将文件大小截为零. 如果文件不存在则尝试创建之. x 创建并以写入方式打开,将文件指针指向文件头.如果文件已存在, 则fopen()调用失败并返回false,并生成一条E_WARNING级别的错误信息. 如果文件不存在则尝试创建之. x+ 创建并以读写方式打开