c++中fstream對txt文件的讀寫操作


c語言中,對文件的操作一般通過文件指針FILE*來進行。然而,c++有着更為便捷的操作——文件流。好吧,其實我也不是很熟悉“流”的具體概念,等以后深入學習后,一定會把這個坑填上。

在此簡單記錄一下文件流fstream的用法;

可以簡單得把它看成一個類,包含在頭文件<fstream>中。當我們寫上#include<fstream>后,就可以使用ifstream,ofstream,fstream三個類來定義對象了。

例如:ifstream  infile(); 成功定義了一個名叫infile的對象,可以調用ifstream中的函數;

但是,此時infile只是一個對象,並沒有和我們需要讀取的文件產生關聯。

目前,我發現共有兩種方式

1、通過ifstream的函數 .open(),這個函數有幾種重載的方式

  1. 首先,關於路徑,一共有5種方式:
    1. 相對路徑,當你所要操作的文件與你的.cpp文件在同一個目錄下,就可以使用相對路徑,相對路徑必須將文件格式寫清楚,例如:infile.open("ans.txt");
    2.   絕對路徑,可以搜索到電腦中所有的文件,但路徑必須正確,例如:infile.open("D:\Codeblock\test\formulations.txt");
    3. 可以填入一個是指向字符串文件名的指針,例如:const char* str=”ans.txt"; infile.open(str);
    4. 可以填寫一個內容等於文件名字的string常量,例如:const string str = “ans.txt";  infile.open(str);
    5. 如果不是const string ,而是string,那必須使用infile(str.c_str());     此處.c_str()是string的一個成員函數,目標是將string變成const string .關於string和const string 之間的區別嘛,emmmmmm,有空一定填上
  2. ios::app     //在文件末尾補入
    ios::ate      //定位到文件末尾,app包含此項屬性
    ios::binary //以二進制的方式讀取文件
    ios::in        //讀文件
    ios::out      //輸入文件
    ios::nocreate //不創造,如果文件不存在,則失敗
    ios::noreplace//不覆蓋,如果文件存在,則失敗
    ios::trunc      //如果文件存在,則將文件內容清空

    3.多種文件的打開方式能使用或運算("|") ,例如:infile("ans.txt",ios::app | ios::out);

         4.打開文件的屬性,prot.好像不常用,等哪天用到了,再來寫

2. 第二種打開方式則更為簡單,利用初始化的方法,例如 ifstream infile("ans.txt");

    當然,初始化的時候,也可以加上mode,例如 ifstream infile("ans.txt",ios::app);

.is_open() 的用法

#include <fstream>

using namespace std;

int mian()
{
    ifstream infile ;
    infile.open("ans.txt");
    
    if(!infile.is_open())
    {
         cout<<"Wrong"<<endl;
         return 0;
    }    

.......................
    
     return 0;
} 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM