1. 程式人生 > >ofstream和ifstream的詳細用法

ofstream和ifstream的詳細用法

ofstream是從記憶體到硬碟,ifstream是從硬碟到記憶體,其實所謂的流緩衝就是記憶體空間;

ofstream:檔案寫操作 記憶體寫入儲存裝置 

ifstream:檔案讀操作,儲存裝置讀區到記憶體中

fstream:讀寫操作,對開啟的檔案可進行讀寫操作 

在C++中,有一個stream這個類,所有的I/O都以這個“流”類為基礎的,包括我們要認識的檔案I/O,stream這個類有兩個重要的運算子: 1、插入器(<<)
  向流輸出資料。比如說系統有一個預設的標準輸出流(cout),一般情況下就是指的顯示器,所以,cout<<"Write Stdout"<<'\n';就表示
把字串"Write Stdout"和換行字元('\n')輸出到標準輸出流。 2、析取器(>>)
  從流中輸入資料。比如說系統有一個預設的標準輸入流(cin),一般情況下就是指的鍵盤,所以,cin>>x;就表示
從標準輸入流中讀取一個指定型別(即變數x的型別)的資料。   在C++中,對檔案的操作是通過stream的子類fstream(file stream)來實現的,所以,要用這種方式操作檔案,就必須加入標頭檔案fstream.h。下面就把此類的檔案操作過程一一道來。
bool MyGame::isFileExist(const char *path)
{
    FILE *fp = fopen(path, "r");//r表示只讀檔案
    bool bRet = false;

    if (fp)
    {
        bRet = true;
        fclose(fp);
    }

    return bRet;
}

void MyGame::saveGameData(bool playing, char *gridData, int maxScore, int level, int currentLevelBeginScore, int score){
    ofstream ofs(m_gameDataPath.c_str());
    if (ofs.is_open())
    {
        ofs<<maxScore<<" "<<level<<" "<<currentLevelBeginScore<<" "<<score<<" "<<playing<<" ";
        if (playing)
        {
            for(int i = 0; i < GameScene::GRID_COUNT_LANDSCAPE * GameScene::GRID_COUNT_PORTRAIT; i++){
                ofs<<gridData[i]<<" ";
            }
        }
        ofs.close();
    }
}
<pre name="code" class="cpp">void MyGame::openGameScene(bool recover){
    bool playing = false;
    char gridData[GameScene::GRID_COUNT_LANDSCAPE * GameScene::GRID_COUNT_PORTRAIT];
    int maxScore = 0;
    int level = 1;
    int currentLevelBeginScore = 0;
    int score = 0;
    if (isFileExist(m_gameDataPath.c_str()))
    {
        ifstream ifs(m_gameDataPath.c_str());
        if (ifs.is_open())
        {
            ifs>>maxScore;
            ifs>>level>>currentLevelBeginScore>>score>>playing;
            if (!playing)
            {
                maxScore= maxScore < score ? score : maxScore;
            }
            if (recover)
            {
                if (playing)
                {
                    for(int i = 0; i < GameScene::GRID_COUNT_LANDSCAPE * GameScene::GRID_COUNT_PORTRAIT; i++){
                        ifs>>gridData[i];
                    }
                }
            }else{
                level = 1;
                currentLevelBeginScore=0;
                score=0;
                playing = false;
            }
            ifs.close();
	}
     }
}




相關推薦

【C++】C++ 檔案讀寫 ofstreamifstream詳細用法

  此文貌似值得一讀:https://www.cnblogs.com/hdk1993/p/5853233.html   原文自:https://www.cnblogs.com/batman425/p/3179520.html 原文出自【位元網】,轉載請保留原文連結

ofstreamifstream詳細用法

                ofstream是從記憶體到硬碟,ifstream是從硬碟到記憶體,其實所謂的流緩衝就是記憶體空間;在C++中,有一個stream這個類,所有的I/O都以這個“流”類為基礎的,包括我們要認識的檔案I/O,stream這個類有兩個重要的運算子:1、插入器(<<)  向

C++ ofstreamifstream詳細用法以及C語言的file用法

ofstream是從記憶體到硬碟,ifstream是從硬碟到記憶體,其實所謂的流緩衝就是記憶體空間;   在C++中,有一個stream這個類,所有的I/O都以這個“流”類為基礎的,包括我們要認識的檔案I/O,stream這個類有兩個重要的運算子:   1、插入器(&

詳細ofstreamifstream詳細用法

ofstream是從記憶體到硬碟,ifstream是從硬碟到記憶體,其實所謂的流緩衝就是記憶體空間(文章最末尾附上了MSDN中關於這兩個函式的解釋);在C++中,有一個stream這個類,所有的I/O都以這個“流”類為基礎的,包括我們要認識的檔案I/O,stream這個類有兩個重要的運算子:        1

【轉載】C++ ofstreamifstream詳細用法

原文出自【位元網】,轉載請保留原文連結:http://soft.chinabyte.com/database/460/11433960.sh ofstream是從記憶體到硬碟,ifstream是從硬碟到記憶體,其實所謂的流緩衝就是記憶體空間;     在C++中,有一個s

C++ ofstreamifstream詳細用法

void main( void ) {//利用ofstream類的建構函式建立一個檔案輸出流物件來開啟檔案 ofstream fout( "d:\\mytest.txt" );  if ( ! fout){cout << "檔案不能開啟" <<endl;}else{// 輸出到磁碟檔案

ofstreamifstream用法

ofstream是從記憶體到硬碟,ifstream是從硬碟到記憶體中。 一、開啟檔案        在fstream類中,有一個成員函式open(),就是用來開啟檔案的,其原型是:        void open(const char* filename,int m

ofstreamifstream詳細用法

ofstream是從記憶體到硬碟,ifstream是從硬碟到記憶體,其實所謂的流緩衝就是記憶體空間; ofstream:檔案寫操作 記憶體寫入儲存裝置  ifstream:檔案讀操作,儲存裝置讀區到記憶體中 fstream:讀寫操作,對開啟的檔案可進行讀寫操作  在C

總結:ofstreamifstream用法

ofstream是從記憶體到硬碟,ifstream是從硬碟到記憶體。函式說明:1、開啟檔案在fstream類中,成員函式open(),就是用來開啟檔案的,其原型是:     void open(const char* filename,int mode,int access)

ofstream ifstream的具體用法

#include <iostream> #include <fstream> using namespace std; int main() { int n[5] = {1, 2, 3, 4, 5}; register int i; ofstream out("test", ios::

ofstreamifstream 讀寫檔案

#include <iostream> using namespace std; #include <fstream> void main() {

[Python開發]Python中struct.pack()struct.unpack()用法詳細說明

python中的struct主要是用來處理C結構資料的,讀入時先轉換為Python的字串型別,然後再轉換為Python的結構化型別,比如元組(tuple)啥的~。一般輸入的渠道來源於檔案或者網路的二進位制流。   1.struct.pack()和struct.unpack() 在轉化

JavaScript筆記:最詳細的call函式apply函式用法總結

昨天聽了一堂直播,裡面有教到關於forEach函式的原始碼編寫,提到了call()和apply()函式,有點懵,這才發現之前我學的太快了,有很多細節沒有注意,當進行實戰時才發現漏了一些東西,現在開始查漏補缺。 今天就好好總結一下call()和apply()方法的應用。首先,這兩個函式

Python中struct pack struct unpack 用法詳細說明

                python中的struct主要是用來處理C結構資料的,讀入時先轉換為Python的字串型別,然後再轉換為Python的結構化型別,比如元組(tuple)啥的~。一般輸入的渠道來源於檔案或者網路的二進位制流。1.struct.pack()和struct.unpack()在轉化過

SQL中UNIONUNION ALL的詳細用法

在開發中,有些資料的儲存可能涉及到分庫分表,查詢的時候,可能需要查詢所有的分表,這個時候,就需要用到UNION或者UNION ALL,下面介紹一下UNION的用法以及與UNION ALL的區別: UNION操作符用於合併兩個或多個SELECT語句的結果集,這裡需要注意的是:

c++中ifstream,ofstreamfstream的使用方法

一、C++中IO庫型別 c++中的IO庫型別和標頭檔案如下: 各種IO庫型別對應的繼承關係為: 型別ifsream和istringstream都繼承自istream; 型別ofsream和ostringstream都繼承自ostream; 型別fs

iOS NSAttributedStringNSMutableAttributedString、NSMutableParagraphStyle的詳細用法

NSAttributedString,NSMutableAttributedString是帶屬性的特殊字串,NSMutableParagraphStyle是帶屬性的文字段落屬性,用於控制段落有關屬性(行間距,文字縮排等等)。 1、NSAttributedStr

sql語句中的 in 、not in 、exists、not exists 詳細用法說明差別----not in失效

來看下面這樣一條SQL語句: select * from student where 20 < all (select score from student) 其中,(select score from student)返回的是所有分數的記錄集 只有當記錄集中的所有分數都大於20後,才會執行前面的SQ

git的詳細用法基礎教程

Git 是當前最流行的版本控制程式之一,文字包含了 Git 的一些基本用法 建立 git 倉庫 初始化 git 倉庫  mkdir project  # 建立專案目錄  cd project  # 進入到專案目錄  git init  # 初始化 git 倉

C++ 中ofstreamifstream用法

  在C++中,有一個stream這個類,所有的I/O都以這個“流”類為基礎的,包括我們要認識的檔案I/O,stream這個類有兩個重要的運算子: 1、插入器(<<)    向流輸出資料。比如說系統有一個預設的標準輸出流(cout),一般情況下就是指的顯示器,所