FString与std::string互转
时间: 2023-11-16 10:07:13 浏览: 205
FString是Unreal Engine中的字符串类,而std::string是C++标准库中的字符串类。要进行FString和std::string之间的互相转换,你可以使用一些辅助函数。
要将FString转换为std::string,你可以使用UTF8转换函数:
```cpp
#include <string>
std::string FStringToString(const FString& InFString)
{
std::string OutString;
const TCHAR* CharArray = *InFString;
int32 Size = FCString::Strlen(CharArray) + 1;
char* ConvertedCharArray = new char[Size];
int32 ConvertedLength;
WideCharToMultiByte(CP_UTF8, 0, CharArray, -1, ConvertedCharArray, Size, nullptr, nullptr);
OutString = ConvertedCharArray;
delete[] ConvertedCharArray;
return OutString;
}
```
要将std::string转换为FString,你可以使用ANSI转换函数:
```cpp
#include "Misc/Paths.h"
FString StringToFString(const std::string& InString)
{
FString OutFString;
int32 Size = MultiByteToWideChar(CP_ACP, 0, InString.c_str(), -1, nullptr, 0);
wchar_t* ConvertedCharArray = new wchar_t[Size];
MultiByteToWideChar(CP_ACP, 0, InString.c_str(), -1, ConvertedCharArray, Size);
OutFString = ConvertedCharArray;
delete[] ConvertedCharArray;
return OutFString;
}
```
这些函数会将Unicode字符串转换为UTF-8编码或者ANSI编码的字符串,并进行相应的转换。请注意,在进行字符串转换时,需要包含相应的头文件和库,例如Windows.h,StringHelper.h等。
希望对你有所帮助!
阅读全文