Unreal Engine 4 programming
Unreal engine 4에서 ini 파일 읽기
카스가짱
2020. 5. 26. 17:30
1. 설명
Unreal engine 4에서 C++ 코드로 ini 파일을 읽는 방법입니다.
GConfig라는 전역 변수에서 GetString() 함수를 호출합니다.
2. 함수 구조
bool FConfigCacheIni::GetString( const TCHAR* Section, const TCHAR* Key, FString& Value, const FString& Filename )
반환 값 True : 값 읽기 성공
반환 값 False : 값 읽기 실패
Section : ini section 문자열 포인터
Key : ini key 문자열 포인터
Value : 값을 읽어올 문자열 레퍼런스
Filename : ini 파일 경로
3. 특징
-
대소문자를 구분하지 않음.
-
Section과 key에 비어있는 문자열(“”)도 사용 가능함.
-
Section이 없는 key에는 접근할 수 없음.
-
띄어쓰기가 있는 문자열도 문자열 전체를 가져올 수 있음.
-
주석은 ;(세미콜론)이 아니라 //(빗금 2개)를 사용함.
-
“”(큰따옴표)로 둘러싸인 문자열에서 큰따옴표는 가져와지지 않음.
-
Section과 key가 동일한 항목에 대해선 가장 아래에 있는 key 값에 해당하는 값을 가져옴. (아래에 있는 동일한 Section과 key를 가진 항목이 덮어씌워짐.)
4. 사용 예시
4.1. ini 파일 예시
key_test = key_test = two empty [] empty_section = empty_section // 섹션이 비어있음 = empty_key [owner] name = 홍길동 = 최고의 제품 [database] server = 192.0.2.62 ; server ip port = 143 file = "payroll.dat" Port = abcd PORT = 1d1d1d2d4 port = '123123' [owner] name = 둘리 ;;; // 이름 |
4.2. Unreal 4 C++ 코드 예시
void Aini_Actor::BeginPlay()
{
Super::BeginPlay();
FString readString;
bool returnValue;
returnValue = GConfig->GetString(TEXT(""), TEXT("key_test"), readString, FString{ "C:/Users/warim/Desktop/test_ini_file.ini" });
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, FString::FromInt(static_cast<int32>(returnValue)) + " " + readString);
readString = "";
returnValue = GConfig->GetString(TEXT(""), TEXT("empty_section"), readString, FString{ "C:/Users/warim/Desktop/test_ini_file.ini" });
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, FString::FromInt(static_cast<int32>(returnValue)) + " " + readString);
readString = "";
returnValue = GConfig->GetString(TEXT(""), TEXT(""), readString, FString{ "C:/Users/warim/Desktop/test_ini_file.ini" });
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, FString::FromInt(static_cast<int32>(returnValue)) + " " + readString);
readString = "";
returnValue = GConfig->GetString(TEXT("owner"), TEXT("name"), readString, FString{ "C:/Users/warim/Desktop/test_ini_file.ini" });
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, FString::FromInt(static_cast<int32>(returnValue)) + " " + readString);
readString = "";
returnValue = GConfig->GetString(TEXT("owner"), TEXT("organization"), readString, FString{ "C:/Users/warim/Desktop/test_ini_file.ini" });
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, FString::FromInt(static_cast<int32>(returnValue)) + " " + readString);
readString = "";
returnValue = GConfig->GetString(TEXT("owner"), TEXT(""), readString, FString{ "C:/Users/warim/Desktop/test_ini_file.ini" });
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, FString::FromInt(static_cast<int32>(returnValue)) + " " + readString);
readString = "";
returnValue = GConfig->GetString(TEXT("database"), TEXT("server"), readString, FString{ "C:/Users/warim/Desktop/test_ini_file.ini" });
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, FString::FromInt(static_cast<int32>(returnValue)) + " " + readString);
readString = "";
returnValue = GConfig->GetString(TEXT("database"), TEXT("port"), readString, FString{ "C:/Users/warim/Desktop/test_ini_file.ini" });
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, FString::FromInt(static_cast<int32>(returnValue)) + " " + readString);
readString = "";
returnValue = GConfig->GetString(TEXT("database"), TEXT("file"), readString, FString{ "C:/Users/warim/Desktop/test_ini_file.ini" });
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, FString::FromInt(static_cast<int32>(returnValue)) + " " + readString);
readString = "";
returnValue = GConfig->GetString(TEXT("database"), TEXT("Port"), readString, FString{ "C:/Users/warim/Desktop/test_ini_file.ini" });
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, FString::FromInt(static_cast<int32>(returnValue)) + " " + readString);
}
4.3. 결과 예시
아래부터 위로 출력 순서를 가지며, 맨 위에 있는 문자열이 가장 마지막에 출력된 문자열입니다.
5. 참고
위키 백과 : INI 파일
https://ko.wikipedia.org/wiki/INI_%ED%8C%8C%EC%9D%BC