c++ 文件流

文件操作:
FILE*  buffer = fopen("filename",mode);
               
fopen_s()  FILE*   文件名:  "BusInfo.dat"

      打开方式:1.文本模式: 
         r       打开只读文件,该文件必须存在。  
         r+    打开可读写的文件,该文件必须存在。
         rb+     读写打开一个二进制文件,只允许读写数据。
         rt+     读写打开一个文本文件,允许读和写。
         w       打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件
         w+      打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
         a       以附加的方式打开只写文件。若文件不存在,则会建立该文 
                         件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留) 
         a+      以附加方式打开可读写的文件。若文件不存在,则会建立该 文件,如果文件存在,写入的数据会被加到文件尾后,即文 
                            件原先的内容会被保留。(原来的EOF符不保留)
       wb        只写打开或新建一个二进制文件;只允许写数据。
       wb+       读写打开或建立一个二进制文件,允许读和写。
       wt+       读写打开或着建立一个文本文件;允许读写。
       at+       读写打开一个文本文件,允许读或在文本末追加数据。
       ab+       读写打开一个二进制文件,允许读或在文件末追加数据。
                
                2.二进制:  "rb","wb","ab"格式与前面相同,只是使用二进制模式而非文本模式打开。 
                
                区别: 文本模式是操作系统在人和二进制之间做了一层转义。
                  回车符"\r\n" 解释成"\n"(读出时),将"\n"解释成"\r\n"(写入时)
                   
                  
                 二进制模式:文件本身的内容和你编写程序时用函数读到的内容完全相同。    
       
   简单的文件I/O
   
    要让程序写入文件,必须这样做:
    1.创建一个ofstream对象来管理输出流
    2.将该对象与特定的文件关联起来。
    3.以使用cout的方式使用该对象,唯一的区别是输出将进入文件,而不是屏幕。
   
    要完成包含头文件fstream。对大多数(但不是全部)实现来说,包含该文件使自动包括iostream。
   
       ofstream  fout;
       
       接下来,必须将这个对象与特定的文件关联起来。为此,可以使用open()方法。例如,假设要打开文件jar.txt进行
    输出,则可以这样做:
    fout.open("jar.txt");
   
    也可以使用另一个构造函数将这两步(合并成一条语句):
    ofstream fout("jar.txt");
   
    fout << "Dull Data";
   
         由于ostream是ofstream类的基类。因此可以使用所有的ostream方法,包括各种插入运算符定义,格式化方法和控制符。
      ofstream类使用被缓冲的输出,因此程序在创建像fout这样的ofstrcam对象时,将为输出缓冲区分配空间。
      以这种方式打开文件来进行输出时,如果没有这样的文件,将创建一个新文件;如果有这样的文件,则打开文件将清空文件,输出将进入到一个
      空文件中。
      
      读取文件的要求与写入文件相似;
      将该对象与特定的文件关联起来;
      以使用cin的方式使用该对象。
      
      ifstream  fin;
      fin.open("jellyjar.txt");
      ifstream fis("jamjar.txt");
      
      char ch;
      fin >> ch;
      char  buf[80];
      fin >> buf;
      fin.getline(buf,80);
      string line;
      getline(fin,line); 
      
      当输入和输出流对象过期时,到文件的连接将自动关闭。另外,也可以使用close()方法来显示地关闭文件。
      
      fout.close();
      fin.close();
      
      关闭遮掩的连接并不会删除流,而只是断开流到文件的连接。然而,流管理装置仍被保留。
      
 
 
17.4.4 命令行处理技术
文件处理程序通常使用命令行参数来指定文件。命令行参数是用户在输入命令时,在命令行中输入的参数。
    例如,要在UNIX或Linux系统中计算文件包含的字数,可以在命令行提示符下输入下面的命令:
    wc  report1  report2  report3
   
      其中  wc  是程序名,report1  report2 和report3是作为命令行参数传递给程序的文件名。
      
#include <fstream>
#include <iostream>
#include <string>
using namespace std; 


/* run this program using the console pauser or add your own getch, system("pause") or input loop */


int main(int argc, char *argv[]) 
{
	string filename;
	
	cout << "Enter name for new file: ";
	cin >> filename;
	
	ofstream fout(filename.c_str());
	
	fout << "For your eyes only!\n";
	cout << "Enter your secret number: ";
	float secret;
	cin  >> secret;
	fout << "Your secret number is " << secret <<endl;
	
	fout.close();
	
	ifstream fin(filename.c_str());
	cout << "Here are the ontents of " << filename << ":\n";
	char ch;
	while(fin.get(ch))


	    cout << ch;
		cout << "Done \n";
		fin.close();
		return 0;	


	
	return 0;
}
      


      
 
 fgets(char* ,nLength,FILE*);
  一次读一行
  参数1:自己的缓冲区
  参数2:缓冲区大小
  参数3:文件的缓冲区     
      
      
fread(char*,2,3,FILE*); 读


fwrite(char*,2,3,FILE*);  写


fclose(FILE*); 关闭文件,没写的话,内存泄漏,内容没写进去


buffer  = NULL   防止野指针,  使用前 if(NULL == buffer)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值