使用特殊字符将std :: string转换为FString(TCHAR / wstring)

时间:2018-06-13 17:42:42

标签: c++ string unreal-engine4 string-conversion text-manipulation

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

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

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

即使绝望地尝试使用此功能也失败了:

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

什么都没发生。

如何在std::stringFString之间正确转换?

2 个答案:

答案 0 :(得分:0)

std::string转换为std::wstring,因为它也是wchar_t上的模板,并尝试使用它初始化FString
如果您不知道如何转换为wstring,请查看此主题:c++ can't convert string to wstring
然后您可以执行以下操作:
FString str = FString(your_wstring.c_str());
FString str(your_wstring.c_str());

您还可以尝试直接从文件中读取数据到wstring甚至是FString,因为UE4拥有自己的类来管理文件,例如: FFileHelperhttp://api.unrealengine.com/INT/API/Runtime/Core/Misc/FFileHelper/index.html,我真的向您推荐这最后一个选项:-)

答案 1 :(得分:0)

您可以将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