将 std::string 转换为具有特殊字符的 FString (TCHAR / wstring)

Convert std::string to FString (TCHAR / wstring) with special characters

本文关键字:FString TCHAR wstring string std 转换 特殊字符      更新时间:2023-10-16

使用虚幻引擎4,我想从机器加载一个文件,其中包含等字符。

所有转换尝试都会导致最终FString在其位置包含?,或者根本没有字符。

FString是UE4的内部字符串类,它使用TCHAR(wchar_t(,它使用UTF-16编码。

即使是绝望地尝试使用它也失败了:

std::replace(str.begin(), str.end(), L'“', L'"');

什么也没发生。

如何在std::string之间正确转换为FString

将您的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