前言:
介紹如何使用 CStdioFile 類去寫文件。
完整工程代碼,點我下載(請注意工程里面需要包含的 <locale.h>頭文件 )
示例:
1 /// My Add 2 // 獲取當前路徑名 3 WCHAR szPaht[MAX_PATH] = { 0 }; 4 GetModuleFileName(NULL, szPaht, sizeof(szPaht)); 5 PathRemoveFileSpec(szPaht); 6 7 // 設置你的文件名 8 CString strFileName("Demo.txt"); 9 10 // 將文件名附加在 當前路徑 里面 11 wcscat_s(szPaht, L"\\"); ///知道為啥是L 開頭嗎,因為vs2013工程默認是unicode環境,unicode字符串需要 L 開頭的宏 12 wcscat_s(szPaht, strFileName.GetString()); 13 14 /// 必須 設置 一下 語言環境,否則 my_log_file.WriteString 不能輸出中文(是不是感覺好復雜?)沒關系,當前工程能跑起來,能夠就行。 15 setlocale(LC_ALL, "chs"); 16 17 // 文件讀寫 StdioFile 18 // 1.創建 CStdioFile的對象,並指定 讀寫文件的方式。 CFile::modeNoTruncate,不會覆蓋之前的文件。 19 CStdioFile my_log_file(szPaht, CFile::modeWrite | CFile::modeCreate | CFile::modeNoTruncate); 20 /// 這里將2行代碼合並為1行了。如果分開寫,是這樣的: 21 /// CStdioFile my_log_file; 22 /// my_log_file.Open(szPaht, CFile::modeWrite | CFile::modeCreate | CFile::modeNoTruncate); 23 //// 24 25 // 2.將讀寫指針移到文件末尾 26 my_log_file.SeekToEnd(); 27 // 3.寫入一個字符串 28 CString strData; 29 strData.Format(L"%s", L"早上好,"); 30 strData = strData + L"烏龜大師。\r\n"; 31 my_log_file.WriteString(strData); 32 // 4.關閉 讀寫指針 33 my_log_file.Close();
因為是在vs2013下創建的工程,默認是unicode編碼,所以就用到了 WCHAR 這樣的字符類型。
這里面也有 再次介紹 如何 獲取字符串。
這些都不是重點。重點看看 CStdioFile 這個類如何使用。
1.創建這個類的對象;
2.調用open() 方法,打開某個文件;///// 第1步和第2步可以合並。見代碼第19行。
3.如果有必要,就調用 SeekToEnd(),將文件指針移到文件末尾
4.調用WriteString() 寫入文件;
5.寫完之后,關閉文件。
必須指出的地方:
1. 需要設置 語言環境(setlocale(LC_ALL, "chs"); ),否則 WriteString() 無法將中文寫入到文本文件中。
2.我講解的不太清楚,如果你也看得迷迷糊糊的,沒關系,有源碼。可以直接拿來用的。前言部分 有源碼鏈接。
參考鏈接:
http://blog.csdn.net/ljz888666555/article/details/5511247
http://blog.csdn.net/jearmy/article/details/39559895
