FString 如何转 std::string
时间: 2023-11-13 19:05:07 浏览: 130
`FString` 是 Unreal Engine 中的字符串类,如果需要将其转换为 `std::string`,可以使用以下两种方法:
1. 使用 `TCHAR_TO_UTF8()` 宏
```c++
#include "CoreMinimal.h"
#include <string>
std::string FStringToString(const FString& InFString) {
const char* CharData = TCHAR_TO_UTF8(*InFString);
std::string Result(CharData);
return Result;
}
```
在这种方式下,先将 `FString` 对象转换为 `const TCHAR*` 类型,然后再使用 `TCHAR_TO_UTF8()` 宏将其转换为 `const char*` 类型,最后再将其转换为 `std::string` 类型。
2. 使用 `std::wstring_convert` 类
```c++
#include "CoreMinimal.h"
#include <string>
#include <codecvt>
std::string FStringToString(const FString& InFString) {
std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> Converter;
std::string Result = Converter.to_bytes(*InFString);
return Result;
}
```
在这种方式下,使用 `std::wstring_convert` 类将 `FString` 对象转换为 `std::wstring` 对象,然后再使用 `std::wstring_convert` 类将 `std::wstring` 对象转换为 `std::string` 对象。
需要注意的是,第二种方式需要包含 `<codecvt>` 头文件,并且在 C++17 及以上版本中,该头文件已经被标记为已弃用,建议使用第一种方式进行转换。
阅读全文