#pragma once #include #include "Array.h" class FString { 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); } };