zoukankan      html  css  js  c++  java
  • C++文件读写

    头文件:#include <fstream>

    C++文件读写主要通过三个类创建文件对象进行操作:ofstream,ifstream,fstream;

    文件读写流程:

    1.包含头文件:#include <fstream>;

    2.通过类创建文件对象与要进行读写的文件建立连接;

      1)创建fstream文件对象,并通过open函数与目标文件建立连接

        open() 成员函数的第一参数指定要打开的文件的名称和位置,第二个参数定义文件被打开的模式。

    模式标志描述
    ios::app 追加模式。所有写入都追加到文件末尾。
    ios::ate 文件打开后定位到文件末尾。
    ios::in 打开文件用于读取。
    ios::out 打开文件用于写入。
    ios::trunc 如果该文件已经存在,其内容将在打开文件之前被截断,即把文件长度设为 0。
      fstream out;  
      out.open("Hello.txt", ios::out|ios::binary);//模式参数可以由多个组合,中间用|隔开

      2) 通过ofstream,ifstream和fstream创建文件对象,并通过默认构造函数建立与目标文件的连接

      ifstream in("in.txt");//ifstream的默认模式参数:ios::in
      ofstream out("in.txt");//ofstream的默认模式参数:ios::out |ios::trunc
      fstream io("io.txt");//fstream的默认模式参数:ios::in|ios::out

    需要注意的是:只有当函数被调用时没有声明方式参数的情况下,默认值才会被采用。如果函数被调用时声明了任何参数,默认值将被完全改写,而不会与调用参数组合。

           ifstream无法进行写操作,ofstream无法进行读操作;

    3.通过文件对象的方法进行读写操作:

      读操作: >> , get( ),getline( ), read( );

      string s;
      in>>s;//>>读取操作与标准cout>>读取基本一样
    
      char ch='a';
      in.get(ch);//get每次只读取一个字符,包括空格,换行都可以读取
    
    
      char arr[20];
      in.getline(arr,100);//每次读取一行,遇到换行符结束,第一个参数为存到内存的首地址,第二个参数为最大读取字节,当满了最大读取字节就会结束读取;
    
      char buf[20];
      in.read(buf,20);//第一个参数表示要读到内存的地址,第二个参数表示要读取的字节数;

     

      写操作:<<,put( ), write( );

      string s="hello";
      out<<s;//<<读取操作与标准cout<<读取基本一样
    
      char ch='a';
      out.put(ch);//put每次只写一个字符
    
      char buf[10]="wfxqhfn";
      out.write(buf,10);//第一个参数表示要写入文件的内存地址,第二个参数表示要写的字节数;

    4.关闭文件;

      io.close();

     

    示例:从文件in.txt读入一个字符串并写到out.txt中

     1 #include <fstream>
     2 #include<string>
     3 #include <iostream>
     4 
     5 using namespace std;
     6 
     7 int main()
     8 {
     9     char str[20];
    10     ifstream in("in.txt");
    11     ofstream out("out.txt");
    12     if(out.fail()||in.fail()){
    13         cout<<"打开文件错误!"<<endl;
    14 
    15     }
    16     else{
    17         in>>str;
    18         out<<str<<endl;
    19         out.close();
    20         in.close();
    21     }
    22     return 0;
    23 }
    View Code

    判断文件是否结束的方法

    1.使用成员函数eof()可以检测到这个结束符,如果非0表示文件结束;(file.eof()返回值非0表示文件结束;)

    2.使用流直接检测,如果为0表示文件结束;(    while(file) {  }  )

    3.使用get函数,读取最后一个结束符时,返回0.读取正常情况下,返回1,并把读取的字符放到ch中

     

  • 相关阅读:
    [转]K/3加密控制规则
    修改Delphi2009的界面风格
    [转]软件版本号讲解: 什么是Alpha, Beta, RC
    百度程序题目连续数问题
    得到正整数a的16进制表示
    四舍五入至某小数位后返回数字串
    返回相同宽度数字型字符串
    百度程序题目连续数问题 另解
    求二进制表示中1的个数
    六支筷子取其二,恰为一双的概率
  • 原文地址:https://www.cnblogs.com/zdl2234/p/10800804.html
Copyright © 2011-2022 走看看