Преобразование std::string в FString (TCHAR / wstring) со специальными символами
Используя Unreal Engine 4, я хочу загрузить файл с компьютера, который содержит такие символы, как “
, ”
, ‘
а также ’
,
Все попытки конвертации приводят к финалу FString
либо содержащий ?
на их месте или вообще без характера.
FString
класс внутренней строки UE4, который использует TCHAR
(wchar_t
), который использует кодировку UTF-16.
Даже отчаянные попытки использовать это потерпели неудачу:
std::replace(str.begin(), str.end(), L'“', L'\"');
Ничего не случилось.
Как я могу правильно конвертировать между std::string
для FString
?
1 ответ
Конвертировать ваши std::string
в std::wstring
как это также на основе wchar_t
и попробуйте инициализировать ваш FString
с этим.
Проверьте эту тему, если вы не знаете, как конвертировать в wstring
: C++ не может преобразовать строку в wstring
Тогда вы можете сделать что-то вроде:FString str = FString(your_wstring.c_str());
или жеFString str(your_wstring.c_str());
Вы также можете попробовать прочитать данные из файла прямо в wstring
или даже FString
потому что UE4 имеет свои собственные классы для управления файлами, такими как, например, FFileHelper
: http://api.unrealengine.com/INT/API/Runtime/Core/Misc/FFileHelper/index.html и я очень рекомендую вам этот последний вариант:-)
Вы можете преобразовать std::string в FString, а затем записать это так.
std::string someString = "Hello!";
FString unrealString(someString .c_str());
UE_LOG(LogTemp, Warning, TEXT("%s"), *unrealString);
Затем вы можете выполнить на нем функцию замены FString. https://docs.unrealengine.com/en-US/API/Runtime/Core/Containers/FString/Replace/index.html