1. 程式人生 > >VC++ 實現INI文件讀寫操作

VC++ 實現INI文件讀寫操作

c++ word 開發 rfi oid 格式 ++ 路徑 lse

轉載:https://blog.csdn.net/fan380485838/article/details/73188420

在實際項目開發中,會用ini配置文件,在此總結一下對ini讀寫操作

一:讀ini配置文件

DWORD GetPrivateProfileString(
LPCTSTR lpAppName, 
LPCTSTR lpKeyName, 
LPCTSTR lpDefault, 
LPTSTR lpReturnedString, 
DWORD nSize, 
LPCTSTR lpFileName 
);
   其中各參數的意義: 
   lpAppName 根節點name.
         lpKeyName  子節點name
   lpDefault : 如果INI文件中沒有前兩個參數指定的字段名或鍵名,則將此值賦給變量. 
   lpReturnedString : 接收INI文件中的值的CString對象,即目的緩存器.
   nSize : 目的緩存器的大小.
   lpFileName : 是完整的INI文件名.

二:寫ini配置文件

BOOL WritePrivateProfileString(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpString,
LPCTSTR lpFileName
);
  其中各參數的意義:
   LPCTSTR lpAppName 是INI文件中的一個字段名.
   LPCTSTR lpKeyName 是lpAppName下的一個鍵名,通俗講就是變量名.
   LPCTSTR lpString 是鍵值,也就是變量的值,不過必須為LPCTSTR型或CString型的.
   LPCTSTR lpFileName 是完整的INI文件名.

完整代碼:

#include <iostream>
#include <atlstr.h>
using namespace std;

void ReadIniFile(LPCWSTR lpFilePath)
{
    CString strClass, strName, strAge, strSex, strGrade;

    //讀ini配置文件
    ::GetPrivateProfileString(_T("StudentInfo"), _T("Class"), _T(""), strClass.GetBuffer(MAX_PATH), MAX_PATH, lpFilePath);
    ::GetPrivateProfileString(_T(
"StudentInfo"), _T("Name"), _T(""), strName.GetBuffer(MAX_PATH), MAX_PATH, lpFilePath); ::GetPrivateProfileString(_T("StudentInfo"), _T("Age"), _T(""), strAge.GetBuffer(MAX_PATH), MAX_PATH, lpFilePath);//以字符串形式讀取 int age = ::GetPrivateProfileInt(_T("StudentInfo"), _T("Age"), 0, lpFilePath);//返回值是value ::GetPrivateProfileString(_T("StudentInfo"), _T("Sex"), _T(""), strSex.GetBuffer(MAX_PATH), MAX_PATH, lpFilePath); ::GetPrivateProfileString(_T("StudentInfo"), _T("Grade"), _T(""), strGrade.GetBuffer(MAX_PATH), MAX_PATH, lpFilePath); } void WriteIniFile(LPCWSTR lpFilePath) { CString strClub, strPlayer, strNation, strAge, strGrade; strClub = "Barcelona"; strPlayer = "Messi"; strNation = "Argentina"; strAge = "31"; strGrade = "superstar"; ::WritePrivateProfileString(_T("Team"), _T("Club"), strClub, lpFilePath); ::WritePrivateProfileString(_T("Team"), _T("player"), strPlayer, lpFilePath); ::WritePrivateProfileString(_T("Team"), _T("nationality"), strNation, lpFilePath); ::WritePrivateProfileString(_T("Team"), _T("Age"), strAge, lpFilePath); ::WritePrivateProfileString(_T("Team"), _T("Grade"), strGrade, lpFilePath); } int main() { wchar_t szFileFullPath[MAX_PATH]; ::GetModuleFileName(NULL, szFileFullPath, MAX_PATH);//獲取文件路徑 wstring strPath = szFileFullPath; strPath = strPath.substr(0, strPath.rfind(\\) + 1); strPath += L"demo.ini"; //寫ini配置文件 //WriteIniFile(strPath.c_str()); //讀ini配置文件 ReadIniFile(strPath.c_str()); return 0; }

三:配置文件格式:

[StudentInfo]
Class=11
Name=tom
Age=18
Sex=男
Grade=優秀
[Team]
Club=Barcelona
player=Messi
nationality=Argentina
Age=31
Grade=superstar

四:如下需要註意下:
   1.INI文件的路徑必須完整,文件名前面的各級目錄必須存在,否則寫入不成功,該函數返回 FALSE 值.
   2.文件名的路徑中必須為 \\ ,因為在VC++中, \\ 才表示一個 \ .
   3.也可將INI文件放在程序所在目錄,此時 lpFileName 參數為: ".\\demo.ini".
4:如果配置文件中有中文字符,需要修改下配置文件的格式。例如將配置文件重新命名為ASCII碼格式。

VC++ 實現INI文件讀寫操作