从 | 到 | 范例 |
---|---|---|
FString | FName | TestName = FName(*TestString); //不可靠,因 FName 不区分大小写,转换存在损耗 |
FString | FText | TestText = FText::FromString(TestString);//仅在一些情况下有效 |
FText | FString | TestString = TestText.ToString(); //不可靠 |
FText | FName | 不存在。但可先转到 FString 再转到 FName。//不可靠,因 FName 不区分大小写,转换存在损耗 |
FName | FString | TestString = TestName.ToString(); |
FName | FText | TestText = FText::FromName(TestName); //仅在一些情况下有效 |
如需了解可用 FString 函数的完整列表,请查看 UnrealString.h、CString.h 或 FString 上的 API文档。
//构造
FString TestString = FString(TEXT("This is my test FString."));
//串联构建:
//用重载运算符 +=
FString AddedString = FString(TEXT("A"));
FString StringResult += AddedString;
//用重载运算符 +
FString AddedString = FString(TEXT("A"));
FString StringResult = AddedString + AddedString;
//Printf 构建
int TestInt= 123;
FString TestString= FString(TEXT("myString"));
FString NewString= FString::Printf(TEXT("%d %s"), Int1, *TestString); // '123 myString'
//注意:使用 %s 参数包含 FStrings 时,必须使用 * 运算符返回 %s 参数所需的 TCHAR*
//将 std::string 转 FString
std::string TestString = "Hello World";
FString NewString(TestString.c_str());
//将 FArrayReaderPtr 转 FString
uint8 Data[512];
FMemory::Memzero(Data, 512);
FMemory::Memcpy(Data, ArrayReaderPtr->GetData(), ArrayReaderPtr->Num());
FString NewString = ((const char*)Data);
//将 Array 转 FString
TArray<uint8> Content;
const std::string Str(reinterpret_cast<const char*>(Content.GetData()), Content.Num());
FString NewFString = Str.c_str();
//将 float 转 FString
FString FloatString = FString::SanitizeFloat(FloatVariable);
//将 int转 FString
FString IntString = FString::FromInt(IntVariable);
//将 bool 转 FString
FString BoolString = InBool ? TEXT("true") : TEXT("false");//either 'true' or 'false'
//将 FVector 转 FString
FString FVectorString = VectorVariable.ToString();//'X= Y= Z='
//将 FVector2D 转 FString
FString FVector2DString = Vector2DVariable.ToString();//'X= Y='
//将 FRotator 转 FString
FString FRotatorString = RotatorVariable.ToString(); //'P= Y= R='
//将 FLinear 转 FString
FString FLinearString = ColorLinearColorVariable.ToString();//'(R=,G=,B=,A=)'
//将 UObject 转 FString
FString UObjectNameString = (InObj != NULL) ? InObj->GetName() : FString(TEXT("None"));//UObject's FName
//测试代码
//#include "Engine/Engine.h"
FString FloatString = FString::SanitizeFloat(10.f);
FString IntString = FString::FromInt(10);
FString BoolString = bool(true) ? TEXT("true") : TEXT("false");
FString FVectorString = FVector::ZeroVector.ToString();
FString FVector2DString = FVector2D::ZeroVector.ToString();
FString FRotatorString = FRotator::ZeroRotator.ToString();
FString FLinearString = FLinearColor::Black.ToString();
FString UObjectNameString = (this != nullptr) ? this->GetName() : FString(TEXT("None"));
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::White, FloatString);
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::White, IntString);
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::White, BoolString);
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::White, FVectorString);
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::White, FVector2DString);
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::White, FRotatorString);
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::White, FLinearString);
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::White, UObjectNameString);
//将 FString 转 std::string
FString TestString= "Hello";
std::string StdString(TCHAR_TO_UTF8(*TestString));
//将 FString 转 TArray
//第一种(简易写法)
FString TestString;
TArray<uint8> Content;
Content.SetNum(TestString.Len());
memcpy(Content.GetData(), TCHAR_TO_ANSI(*TestString), TestString.Len());
//第二种(复杂写法)
FString TestString;
const TCHAR* StrPtr = *TestString;
FTCHARToUTF8 UTF8String(StrPtr);
int32 CTXSize = UTF8String.Length();
TArray<uint8> Content;
Content.SetNum(CTXSize);
memcpy(Content.GetData(), UTF8String.Get(), CTXSize);
//将 FString 转 char*
char* TestChar = TCHAR_TO_ANSI(*TestString);
//将 FString 转 const TCHAR*
const TCHAR* TestChar = *TestString;
//将 FString 转 int
int TestInt = FCString::Atoi(*TestString);
//将 FString 转 float
float TestFloat = FCString::Atof(*TestString);
//将 bool 转 float
//字符串"1",“true”,“True”,“Yes”,GTrue,GYes 和 非零整数(包括负整数) 将转化为 true
//字符串"0",“false”,“False”,“No”,GFalse,GNo 和 无法解析值 将转化为 false
bool TestBool = TestString.ToBool();
//通过编译的测试代码
FString IntString = FString(TEXT("10"));
int NewInt = FCString::Atoi(*IntString);
FString FloatString = FString(TEXT("10.000"));
float NewFloat = FCString::Atof(*FloatString);
FString CharString = FString(TEXT("This Is Char"));
const TCHAR* char = *CharString;
FString BoolString = FString(TEXT("true"));
bool NewBool = BoolString.ToBool();
//用重载运算符 == 进行两个字符串的对比
if ( TestString == TEXT("Test") )
{
return;
}
// 用bool FString::Equals(const FString& Other)方法
if ( TestString.Equals(TEXT("Test")) )
{
return;
}
bool Contains(const FString& SubStr)//返回此字符串是否包含指定的子字符串。
bool Contains(const TCHAR* SubStr)//返回此字符串是否包含指定的子字符串。
int32 Find(const FString& SubStr)//在字符串中搜索子字符串,并将index返回。
int32 Find(const TCHAR* SubStr)//在字符串中搜索子字符串,并将index返回。
//通过指定字符串切割字符串,依次输出到指定字符串数组中
FString TestString("1,,2,,3");
TArray<FString>StringArray;
TestString.ParseIntoArray(StringArray, TEXT(",,"), false);
//字符串截取
FString Left(int Count);//从左往右截取指定Count索引的字符串
FString Right(int Count);//从右往左截取指定Count索引的字符串
FString Mid(int Count1 ,int Count2);//截取指定Count1与Count2索引之间的字符串
//字符串大小写转换
FString ToUpper(); //转为大写
FString ToLower(); //转为小写
如需在 HUD 中显示 FString,使用 Canvas 调用 FCanvas::DrawText() 函数:
//必须在 HUD 类的 DrawHUD() 函数中调用 DrawText() 函数,或在以 DrawHUD() 开始的函数链中调用。
Canvas->DrawText(BigFont, TestHUDString, 110.0f,110.0f);
//打印到输出日志
//#include "Engine/Engine.h"
//范例:
UE_LOG(LogClass, Log, TEXT("This is a testing statement.%s"), *TestString);
//打印到视口
//#include "Engine/Engine.h"
/**
* 此函数将向屏幕消息列表添加调试消息。 它将显示为FrameCount帧。
* @param Key 防止相同信息多次添加的唯一键。使用 -1 作为键,使调试信息短时出现。
* @param TimeToDisplay 信息显示时长,按秒计。
* @param DisplayColor 文本显示的颜色。
* @param DebugMessage 显示的信息(FString)。
*/
void UEngine::AddOnScreenDebugMessage(
uint64 Key,
float TimeToDisplay,
FColor DisplayColor,
const FString& DebugMessage, )
//范例1:
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TestString);
//范例2:
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Yellow, FString::Printf(TEXT("Values: x: %f, y: %f"), x, y));
//范例3:
FString TestFilePath;
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, FString::Printf(TEXT("%s"), *TestFilePath));
FText API文档链接
//使用以下任意一个语法创建空白 FText:
FText TestText = FText::GetEmpty();
FText TestText = FText();
FName API文档链接
FName TestName = FName(TEXT("ThisIsMyTestFName"));