(수근수근)
[C++] INI 파일 읽고 쓰기 본문
솔루션에서 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 |