본문 바로가기
프로그래밍/C++

C++ ] .ini 파일 포맷, 설정 파일 입출력 방법

by eteo 2023. 9. 27.

 

 

 

.ini 파일 포맷

 

.ini 파일은 텍스트 파일로 주로 설정 데이터를 저장하는 데 사용된다. 그리고 각 설정은 섹션과 키-값 쌍으로 구성된다.

 

[섹션]
키=값

[Database]
ServerName=MyServer
Port=5432

[User]
Username=JohnDoe
Password=Secret123

 

 

아래 소개할 함수들은 Windows API의 일부로 Windows.h를 포함해야 사용할 수 있으며, 설정 파일에서 구성 데이터를 읽어올 때나, 설정파일에 구성 데이터를 쓸 때 사용할 수 있다.

 

 

 

 

GetPrivateProfileInt

 

섹션과 키를 사용하여 .INI 파일에서 설정 값을 찾으며, 설정 값을 정수(INT) 형태로 반환한다. 만약 해당 섹션이나 키를 찾지 못하면 기본값으로 설정된 nDefault 값을 반환한다.

 

UINT GetPrivateProfileInt(
  LPCTSTR lpAppName,
  LPCTSTR lpKeyName,
  INT     nDefault,
  LPCTSTR lpFileName
);

 

  • lpAppName: .INI 파일에서 설정값을 찾고자 하는 섹션의 이름
  • lpKeyName: 설정값을 식별하는 키의 이름
  • nDefault: 설정값을 찾지 못할 경우 반환할 기본값
  • lpFileName: .INI 파일의 경로와 파일 이름

 

예시.

int port = GetPrivateProfileInt("Database", "Port", 5432, "config.ini");

 

 

 

GetPrivateProfileString

 

섹션과 키를 사용하여 .INI 파일에서 설정 값을 찾으며, 설정 값을 문자열 형태로 lpReturnedString 버퍼에 복사한다. 설정 값을 읽어오고 복사한 문자열의 길이를 반환한다.

만약 해당 키를 찾지 못하면 기본값으로 "DefaultUser"를 사용하며, 문자열의 길이가 버퍼의 크기를 초과하지 않도록 주의해야 한다.

 

DWORD GetPrivateProfileString(
  LPCTSTR lpAppName,
  LPCTSTR lpKeyName,
  LPCTSTR lpDefault,
  LPTSTR  lpReturnedString,
  DWORD   nSize,
  LPCTSTR lpFileName
);

 

  • lpAppName: .INI 파일에서 설정값을 찾고자 하는 섹션의 이름
  • lpKeyName: 설정값을 식별하는 키의 이름
  • lpDefault: 설정값을 찾지 못할 경우 반환할 기본 문자열 값
  • lpReturnedString: 읽어온 설정 값이 저장될 문자열 버퍼, 이 버퍼는 함수 호출 후에 설정 값이 복사된다
  • nSize: lpReturnedString 버퍼의 크기, 설정 값이 이 크기를 초과하면 잘릴 수 있다
  • lpFileName: .INI 파일의 경로와 파일 이름

 

예시.

char username[256];
GetPrivateProfileString("User", "Username", "DefaultUser", username, 256, "config.ini");

 

 

 

 

 

WritePrivateProfileString

 

섹션과 키에 해당하는 설정 값을 .INI 파일에 쓰고, 성공적으로 저장되면 TRUE를 반환, 저장에 실패하면 FALSE를 반환한다.

설정파일에서 해당 섹션과 키를 찾으면 해당 값을 업데이트하고, 없으면 설정파일에 새로운 섹션 및 키를 만든다.

 

BOOL WritePrivateProfileString(
  LPCTSTR lpAppName,
  LPCTSTR lpKeyName,
  LPCTSTR lpString,
  LPCTSTR lpFileName
);

 

  • lpAppName: .INI 파일에서 설정값을 저장할 섹션의 이름
  • lpKeyName: 설정값을 식별하는 키의 이름
  • lpString: .INI 파일에 저장할 문자열 값
  • lpFileName: .INI 파일의 경로와 파일 이름

 

 

예시.

WritePrivateProfileString("User", "Username", "NewUser", "config.ini");