1. 程式人生 > >C/C++ 關於如何讀寫ini配置檔案 (小結)

C/C++ 關於如何讀寫ini配置檔案 (小結)

  • 讀取
  1. 讀取字元  

    DWORD GetPrivateProfileString(
      LPCTSTR
     lpAppName,        // INI檔案中的一個欄位名[節名]可以有很多個節名

      LPCTSTR lpKeyName,        // lpAppName 下的一個鍵名,也就是裡面具體的變數名

      LPCTSTR lpDefault,        // 如果lpReturnedString為空,則把個變數賦給lpReturnedString

      LPTSTR lpReturnedString // 存放鍵值的指標變數,用於接收INI檔案中鍵值(資料)的接收緩衝區

      DWORD nSize,            

    // lpReturnedString的緩衝區大小

      LPCTSTR lpFileName        // INI檔案的路徑
    );

  2. 讀取整型值 (返回值為讀到的整)

    UINT GetPrivateProfileInt(

      LPCTSTR lpAppName // INI檔案中的一個欄位名[節名]可以有很多個節名
      LPCTSTR lpKeyName // lpAppName 下的一個鍵名,也就是裡面具體的變數名
      INT nDefault,       // 如果沒有找到指定的資料返回,則把個變數值賦給返回值

      LPCTSTR lpFileName  // INI檔案的路徑

    );

  • 寫入
  1. 寫入字元  

    BOOL WritePrivateProfileString(
      LPCTSTR

     lpAppName // INI檔案中的一個欄位名[節名]可以有很多個節名

      LPCTSTR lpKeyName // lpAppName 下的一個鍵名,也就是裡面具體的變數名

      LPCTSTR lpString,   // 鍵值,也就是資料

      LPCTSTR lpFileName  // INI檔案的路徑
    );

  2. 寫入整型
  • 讀寫INI檔案時相對路徑和絕對路徑都可以,根據實際情況選擇

  "..\\IniFileName.ini"    // 這樣的為相對路徑

  "D:\\IniFileName.ini"    // 這樣的為絕對路徑

  • MAX_PATH:是微軟最大路徑佔的位元組所設的巨集

寫入的ini檔案 分為:節、鍵名、鍵值

  •   舉個栗子:

  // XX.ini

  [串列埠配置]

  波特率=19200

有了理論,再看看實踐的demo:

  • 寫INI檔案:

LPTSTR lpPath = new char[MAX_PATH];
 
strcpy(lpPath, "D:\\IniFileName.ini");

WritePrivateProfileString("LiMing", "Sex", "Man", lpPath);
WritePrivateProfileString("LiMing", "Age", "20", lpPath);
 
WritePrivateProfileString("Fangfang", "Sex", "Woman", lpPath);
WritePrivateProfileString("Fangfang", "Age", "21", lpPath);

delete [] lpPath;

INI檔案如下:

[LiMing]
Sex=Man
Age=20
[Fangfang]
Sex=Woman
Age=21

  • 讀INI檔案:

LPTSTR lpPath = new char[MAX_PATH];
LPTSTR LiMingSex = new char[6];
int LiMingAge;
LPTSTR FangfangSex = new char[6];
int FangfangAge;
 

strcpy(lpPath, "..\\IniFileName.ini");
 
GetPrivateProfileString("LiMing", "Sex", "", LiMingSex, 6, lpPath);
LiMingAge = GetPrivateProfileInt("LiMing", "Age", 0, lpPath);
 
GetPrivateProfileString("Fangfang", "Sex", "", FangfangSex, 6, lpPath);
FangfangAge = GetPrivateProfileInt("Fangfang", "Age", 0, lpPath);

delete [] lpPath;