FString: A dynamically sizeable string.
内部用的是TArray做的存储,所以在看TArray时会有一些共鸣。
class FString
{
public:
using AllocatorType = TSizedDefaultAllocator<32>;
private:
/** Array holding the character data */
typedef TArray<TCHAR, AllocatorType> DataType;
DataType Data;
先上代码:
常用的格式化输出学习:
UE_LOG(TestLog, Warning, TEXT("int %d"), 1234);
UE_LOG(TestLog, Warning, TEXT("float %f"), 12.34);
FString str = TEXT("test FString");
UE_LOG(TestLog, Warning, TEXT("string %s"), *str);
UE_LOG(TestLog, Warning, TEXT("[%s] len() is %d"), *str, str.Len());
常用的FName FText FString 转换:
- FName 不区分大小写。不可变,无法被操作,通过键进行 FNames 的查找和访问速度较快。
- FText 支持文本本地化,因此面向用户的所有文本
- FString 可以搜索、修改并且与其他字符串比较。保存自己的字符数组.
// 类型转换FName FText FString
FName name = FName(*str); // 资源ID
FText text = FText::FromName(name); // 本地化的文本保存
text = FText::FromString(str);
FString _str = name.ToString(); // 参考std string
_str = text.ToString();
基础类型转换(int bool float char wchar_t):
FString TheString = TEXT("中文123.021");
char* myChar = TCHAR_TO_UTF8(*TheString);
myChar = TCHAR_TO_ANSI(*TheString);
std::string stdStr = TCHAR_TO_UTF8(*TheString);
stdStr = TCHAR_TO_ANSI(*TheString);
std::wstring stdWStr = TCHAR_TO_WCHAR(*TheString);
text = FText::FromString(TheString);
TheString = "123.021";
bool MyBool = TheString.ToBool();
int32 MyInt = FCString::Atoi(*TheString);
float MyFloat = FCString::Atof(*TheString);
double MyDouble = FCString::Atod(*TheString);
FString NewString = FString::FromInt(1234);
NewString = FString::SanitizeFloat(12.34f);
NewString = UTF8_TO_TCHAR("12.34");
NewString = WCHAR_TO_TCHAR(L"12.34");
FString的常用函数
// 填充
NewString.Reset();
NewString.AppendChar('A');
for(int i = 0; i < 10; i++)
{
NewString.AppendInt(i);
}
// 对比
FString strA = TEXT("1234");
FString strB = TEXT("1234");
if(strA == strB)
{
UE_LOG(TestLog, Warning, TEXT("strA == strB == %s"), *strA);
}
// 查找 返回索引
int32 index = strA.Find(TEXT("123"));
if(index >= 0 )
{
UE_LOG(TestLog, Warning, TEXT("strA.Find 123"));
}
// 查找 返回bool
if(strA.Contains(TEXT("23")))
{
UE_LOG(TestLog, Warning, TEXT("strA.Contains 23"));
}
字符串常用的替换、分割等函数
// 替换
FString strC = TEXT("12345");
bool bStart = strC.StartsWith("123");
strC = strC.Replace(TEXT("123"), TEXT("abc"));
// 获取左、右
_str = TEXT("This is a FString");
FString Lstr = _str.Left(2);
FString Rstr = _str.Right(2);
// 分割到数组 不区分大小写
if (!_str.IsEmpty())
{
TArray<FString> _ary;
int32 count = _str.ParseIntoArray(_ary, TEXT("s"));
// 分割为4个元素
int32 size = _ary.Num();
}
网友评论