(수근수근)

[C++] INI 파일 읽고 쓰기 본문

C++

[C++] INI 파일 읽고 쓰기

InformationFarm 2020. 5. 21. 17:48

솔루션에서 config.ini 파일을 읽어서 데이터를 가지고 오는데,

그 부분을 해봐야겠다는 생각이 들어서 짧게나마 공부하고, 실행해보았다.

이걸 불러서 변경하는 부분을 다음에 스스로 토이프로젝트로 진행해보아야겠당

 

INI 파일이란?

ini파일 포맷은 설정파일에 대한 표준이다. 프로그램이 실행될 때 필요한 초기정보를 담은 파일

파일의 형식을 본다면

 

[section]
key =  value

....

 

의 형태로 되어있다. 

 

파일 쓰기

BOOL WritePrivateProfileString(
		LPCSTR lpAppName, // 섹션 (Section) 이름 
        LPCSTR lpKeyName, // 키 (Key) 이름 
        LPCSTR lpString, // 값 (Value)
        LPCSTR lpFileName // 저장할 ini 파일 경로 
);

 

파일 읽기

 

DWORD GetPrivateProfileString( 
			LPCTSTR lpAppName, // 섹션 (Section) 이름 
            LPCTSTR lpKeyName, // 키 (Key) 이름 
            LPCTSTR lpDefault, // 해당 키 (Key) 값 없을 경우 리턴 할 기본값
            LPTSTR lpReturnedString, // 값 (Value) 을 리턴 할 버퍼 
            DWORD nSize, // 버퍼 사이즈 
            LPCTSTR lpFileName // 읽어들일 ini 파일 경로
 );

 

실제 코드

: 실제 ini파일을 읽어보려고 읽는 코드만 작성했다.

(* 아래 함수들은 mfc에서 기본으로 참조하는 winbase.h에서 선언된 함수들이기 때문에 별도의 헤더파일 참조가 필요없다)

#include <cstring>
#include <stdio.h>
#include <stdlib.h>
#include <WinBase.h>

int main(){
	char *cBuf = NULL; 
	cBuf = (char *)malloc(sizeof(char) * 256);
	memset(cBuf, 0x00, sizeof(cBuf)); 

	// Read 
	GetPrivateProfileString("GiveupServiceVDN", "VDN1", "-", cBuf, 256, "C:\\새 폴더\\test.ini"); 
	printf("%s \n", cBuf);
	return 0;
}

응 에러.......?개마니남.......

이유는 모르겠지만.... 라이브러리포함의 문제인것 같아서 이것저것 구글링 하다가 헤더파일 바꿈

 

#include<Windows.h>
#include<iostream>


int main(){
	char *cBuf = NULL; 
	cBuf = (char *)malloc(sizeof(char) * 256);
	memset(cBuf, 0x00, sizeof(cBuf)); 

	// Read 
	GetPrivateProfileString("GiveupServiceVDN", "VDN1", "-", cBuf, 256, "C:\\새 폴더\\test.ini"); 
	printf("%s \n", cBuf);
	return 0;
}

응 잘 됌.........왜일까

그 것은 조금 더 공부해보자.........

 

include 순서의 문제인가?? 순서의 문제는 아니었다.
#include <WinBase.h>를 #include<Windows.h>로 바꾸니까 해결되었다.

 

winBase 헤더의 문제인거같다...정보를 찾아보자.......

 

WinXP에서 헤더 파일이 WinBase.h임을 나타냅니다.

Windows XP, Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 및 Windows Server 2008 R2 (Windows.h 포함)의 WinBase.h ;

 

windows.h는 윈도우 개발자들이 필요한 모든 매크로들, 다양한 함수들과 서브시스템에서 사용되는 모든 데이터 타입들 그리고 윈도우 API의 함수들을 위한 정의를 포함하는 윈도우 C  C++ 헤더 파일이다. 이것은 C에서도 사용될 수 있는 윈도우 용의 수 많은 함수들을 정의한다. Win32 API는 <windows.h>를 포함하고 적절한 라이브러리를 링킹함으로써 C 프로그래밍 프로젝트에 추가될 수 있다. 

'C++' 카테고리의 다른 글

참조(Reference)  (0) 2020.09.11
MFC 함수 정리  (0) 2020.06.22
[2] C 메모리와 포인터  (0) 2020.05.19
[1] C 시작하기  (0) 2020.05.19
[C++] #define 대신 const enum inline  (0) 2020.05.18
Comments