#pragma once #include #include "Array.h" #include "log.h" class FString { public: TArray Data; public: std::string ToString() const { auto length = std::wcslen(Data.Data); std::string str(length, '\0'); std::use_facet>(std::locale()).narrow(Data.Data, Data.Data + length, '?', &str[0]); return str; } void Free() { Data.Free(); } bool IsValid() { return Data.Data; } void Set(const wchar_t* NewStr) // by fischsalat { if (!NewStr/* || std::wcslen(NewStr) == 0 */) return; Data.ArrayMax = Data.ArrayNum = *NewStr ? (int)std::wcslen(NewStr) + 1 : 0; if (Data.ArrayNum) Data.Data = const_cast(NewStr); } FString() {} FString(const wchar_t* str) { Set(str); } ~FString() { if (Data.Data) { // LOG_INFO(LogDev, "Deconstructing FString!"); } // Free(); } };