ios::binary和ios::text開啟檔案區別,fstream讀寫檔案樣本

來源:互聯網
上載者:User

把網上搜尋的內容大致匯總一下:

1.text方式寫入檔案會將換行(/n)擴充成/r/n, 讀檔案時則自動轉換回來

2.binary方式則不會作任何擴充,與讀寫內容一致

3.預設為text方式

 

詳細參考:http://blog.csdn.net/wanfustudio/archive/2007/09/14/1785131.aspx

 

附錄:自己寫的使用fstream讀寫檔案的兩個函數

#include <fstream>

using namespace std;

 

bool Preprocess::ReadParseRsltFile(tstring FileName)

{

    TCHAR szFull[MAX_PATH] = {0};

    _tcscpy_s(szFull, MAX_PATH, m_szDataFileDir);

    _tcscat(szFull, TEXT("//"));

    _tcscat(szFull, FileName.c_str());

    _tcscat(szFull, TEXT("_r"));

 

    wifstream fin;

    fin.open(szFull, ios::binary);

    if (fin.bad())

    {

        return false;

    }

    fin.imbue(std::locale("chs"));

 

    TCHAR szSize[16] = {0};

    fin.getline(szSize,16);  //第一行為檔案大小

    int nSize = _ttoi(szSize);

 

    tstring strTmp;

    for(int i=0; i<nSize; i++)

    {

        getline(fin, strTmp);

        m_vSenParRslt.push_back(strTmp);

    }

    fin.close();

 

    return true;

}

void Preprocess::WriteFiles(tstring FileName, const vector<tstring>&vContent)

{

    TCHAR szFull[MAX_PATH] = {0};

    _tcscpy_s(szFull, MAX_PATH, m_szDataFileDir);

    _tcscat(szFull, TEXT("//"));

    _tcscat(szFull, FileName.c_str());

 

    wofstream fout;

    fout.open(szFull, ios::binary|ios_base::trunc);

  //  fout.clear();

    fout.imbue(std::locale("chs"));

    fout<<vContent.size()<<"/n";

    for(int i=0; i<vContent.size(); i++)

    {

        fout<<vContent[i].c_str()<<"/n";

    }

    fout.close();

}

寫入的內容包含中文,所以必須加上: fout.imbue(std::locale("chs"));

tstring 是自己定義的宏,代表string 或者wstring

#ifdef _UNICODE

#define tstring wstring

#else

#define tstring string

#endif

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.