Преобразование 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

Другие вопросы по тегам