使用虚幻引擎4,我想从计算机加载一个文件,其中包含“
,”
,‘
和’
等字符。
所有转换尝试都会导致最终FString
在其位置包含?
,或者根本不包含任何字符。
FString
是UE4的内部字符串类,它使用TCHAR
(wchar_t
),它使用UTF-16编码。
即使绝望地尝试使用此功能也失败了:
std::replace(str.begin(), str.end(), L'“', L'\"');
什么都没发生。
如何在std::string
到FString
之间正确转换?
答案 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拥有自己的类来管理文件,例如: FFileHelper
:http://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