1. 程式人生 > >「虛幻文件淺析」字串轉換及相關處理

「虛幻文件淺析」字串轉換及相關處理

FString相關

FString 文件連結
如需瞭解可用 FString 函式的完整列表,請檢視 UnrealString.h、CString.h 或 FString 上的 API文件

構造及構建 FString

//創造
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*

將 其它變數 轉化為 FString

//將 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
//測試程式碼
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 轉化為 其它變數

//將 FString 轉 std::string
FString TestString= "Hello";
std::string StdString(TCHAR_TO_UTF8(*TestString));
//將 FString 轉 TArray<uint8>
//第一種(簡易寫法)
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();

FString 對比

//用過載運算子 == 進行兩個字串的對比
if ( TestString == TEXT("Test") )	
{ 
	return; 
}
	
// 用bool FString::Equals(const FString& Other)方法
if ( TestString.Equals(TEXT("Test")) )
{ 
	return; 
}

FString 搜尋

bool Contains(const FString& SubStr) //返回此字串是否包含指定的子字串。
bool Contains(const TCHAR* SubStr) 	//返回此字串是否包含指定的子字串。

int32 Find(const FString& SubStr) 	//在字串中搜索子字串,並將index返回。
int32 Find(const TCHAR* SubStr) 		//在字串中搜索子字串,並將index返回。

FString 切割、擷取、大小寫轉換

//通過指定字串切割字串,依次輸出到指定字串陣列中
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();	//轉為小寫

FString 在HUD顯示

如需在 HUD 中顯示 FString,使用 Canvas 呼叫 FCanvas::DrawText() 函式:

//必須在 HUD 類的 DrawHUD() 函式中呼叫 DrawText() 函式,或在以 DrawHUD() 開始的函式鏈中呼叫。
Canvas->DrawText(BigFont, TestHUDString, 110.0f,110.0f);

FString 列印除錯資訊

//列印到輸出日誌
//範例:
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相關

構造FText

//使用以下任意一個語法建立空白 FText:

FText TestText = FText::GetEmpty();

FText TestText = FText();

FName相關

構造FName

FName TestName = FName(TEXT("ThisIsMyTestFName"));

FString / FText / FName 互相轉換

範例
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相關 FString 文件連結 如需瞭解可用 FString 函式的完整列表,請檢視 UnrealString.h、CString.h 或 FString 上的 API文件。 構造及構建 FString //創造 FString TestStr

PDF轉CAD圖紙轉換

怎麽將PDF文件轉換為CAD圖紙?需要什麽軟件?有那款好用的PDF文件轉CAD圖紙轉換器軟件?怎麽操作使用呢?有沒有什麽簡單的方法?小編相信這是很多人想問的,也想知道的,下面小編就為大家揭開這些問題。 小編為大家介紹的是迅捷PDF轉CAD轉換器,這款軟件可以為大家揭開這些問題,迅捷PDF轉DWG轉換器是

CAD格式怎麽轉換成JPG格式

右上角 直接 f2c tar http 下載 多個 比較 它的 caj格式是一種辦公文件,我們對它的閱讀和轉換很重要,caj文件格式的文件也比較常見。但是很多人對它還是很不了解,比如我們想編輯caj格式的文件,並不能直接編輯,需要我們將它轉換成jpg,才可以進行操作

Linux啟動初始化配置淺析

文本模式 設定 input 其它 ubunt 文檔 登錄 終端 bash 轉自:http://blog.51cto.com/19055/1144600 1)/etc/profile 登錄時,會執行。 全局(公有)配置,不管是哪個用戶,登錄時都會讀取該文件。 (2)/

WPS格式怎麽轉換成PDF格式

添加 oss 輸出 pro 安裝 中一 需要 目錄 RoCE 不知道大家了解過WPS文件轉換成PDF格式嗎?WPS要通過怎樣操作才能轉換成PDF格式?在一些時候如果需要將WPS轉換成PDF格式,大家就可以借助到PDF轉換工具來進行轉換文件格式,想知道操作的可以看下面小編是如

PDF轉DWG格式的要如何進行轉換

安裝完成 dcb cad編輯器 接下來 vpd dwg ima www ref PDF文件轉DWG格式的文件要如何進行轉換?小夥伴們都知道,在CAD行業中,我們最常見的就是dwg格式的文件,但是要交給你的客戶的時候dwg格式的文件不方便進行查看,就需要將文件轉換成PDF,但

CAD轉換成DWF格式怎麽在轉換器中轉換

查看 安裝完成 water 雙擊 CAD轉換器 str 根據 結果 cto CAD文件轉換成DWF格式文件怎麽在轉換器中轉換?大家都知道DWF文件是一種高度壓縮、開放、安全的文件格式,它可以將豐富的設計數據高效的分發給需要查看、評審或者打印這些數據的人看,因為在編輯器中編輯

網上下載的CAD圖紙如何進行版本轉換

每天 ef7 存儲路徑 afa fff 輸出格式 images 更新 alt 網上下載的CAD圖紙文件如何進行版本轉換?CAD文件是我們圖紙保存的一種格式,特別是對於從事CAD相關工作的人來說,CAD更是不陌生,當我們在網上下載一套CAD圖紙文件的時候,如果使用軟件打不開其

word(選擇題)轉換為excl表格

Word轉excl表格 同事在做一個批量性的工作,就是將word文件中的題目和選項,轉移到xml文件中。例項:轉: 再網上有很多將各種文件轉化的工具和例子,但是很少有將固定格式進行轉化的。 因為在這之前也是不明所以,老大直接讓寫個指令碼,本能的感覺這個指令碼不是很好寫,有危險。但是哪有害怕就不做的道理,

java檢測.txt出現某個字串的次數

檢測.txt文件出現某個字串的次數。 首先簡單寫了一個測試文件,可以清楚的看出有3個“這”,2個“我”。 測試結果正確。 這裡以小說《南渡北歸》為例,檢測出現“我”、“梅貽琦”兩個字串出現的次數。 程式碼如下: import java.io.*; import java.

android官方技術翻譯——switch 語句轉換

自ADT 14起,庫專案的資源常量不再是final型的。這一點在此文件中有更詳細的說明。 然而,這樣導致的後果之一是,一些已有的老專案,當使用ADT 14後將不再通過編譯。其中的原因可能較難理解。有一個新的 quickfix 檢測器就是為了解決這個問題,它可以尋找一個特定的編譯錯誤,並在存在這樣的錯誤時增加

電子書如何在線轉換成PDF

開始 com 進行 需要 頁面 的人 閱讀 效果 選擇 電子書文件如何在線轉換成PDF文件,想必很多朋友都喜歡看電子書吧,在如今這個社會,電子書漸漸的要代替紙質書籍了,然而因為PDF文件的各種優點,越來越多的人喜歡將電子書轉換成PDF文件進行閱讀,今天小編來向大家講解一下時

辦公中音頻如何在線轉換格式

技巧 相對 提取 單個 耐心 設置 http 小技巧 nag 辦公中音頻文件如何在線轉換格式,在辦公中會遇到很多關於音頻之一快的文件,特別是在短視頻和電臺跟音樂有關的工作中,音頻文件轉換是需要掌握的一個小技巧,那如何轉換的呢,小編現在就來教教大家。第一步:打開電腦進入瀏覽器

Word如何在線轉換成excel

color 網頁 com 文件的操作 操作 ddd excel表 耐心 term Word文件如何在線轉換成excel文件,在運用到word和excel兩個辦公軟件的時候都知道可以在word文檔裏面插入excel表格,那如何將word文件轉換成excel表格呢,小編今天就來

WORD如何在線轉換成長圖文

pro .com ado 內容 評論 在線 分享圖片 關於 size WORD文件如何在線轉換成長圖文件,WORD文件內容轉換成圖片形式的話打開閱讀會顯得非常方便,而且可以將很長的一篇文檔轉換成長圖,也減小了文件體積,那如何進行轉換的呢。 點開百度首頁,搜索關鍵詞迅捷PD

QLV視頻如何在線轉換成MP4視頻的

剪輯 合並 ffffff 耐心 視頻轉換 進入 添加 播放 分享圖片 QLV視頻文件如何在線轉換成MP4視頻的,經常看騰訊視頻的朋友知道,騰訊視頻的格式為QLV視頻格式,只能在騰訊視頻客戶端進行播放,剪輯,合並等處理,但我們可以將QLV視頻轉換成MP4格式進行多項操作的,那

linux權限查看修改-chmod ------入門的一些常識

子目錄 以及 利用 動作 兩個 oot 屬性 詳細 chown 查看Linux文件的權限:ls -l 文件名稱查看linux文件夾的權限:ls -ld 文件夾名稱(所在目錄)修改文件及文件夾權限:sudo chmod -(代表類型)×××(所有者)×××(組用戶)×××(其

Windows資源管理器打開夾卡頓原因解決辦法

打開 監視器 啟用 div xpl 通過 windows 資源 解決方法 全新安裝的 Win8 打開文件夾居然會卡頓,特別是打開EXE程序比較多的文件夾,通過資源監視器查看,幕後兇手就是 Windows Defender 殺毒軟件。 MSE是微軟提供防毒功能,而Window

SCCM客戶端ccmcache夾清除和修改Installer夾大小問題

ccmcache installer關於ccmcache文件夾大小問題:  一大早上班收到郵件告警,提示OA系統C盤空間不足,使用率超過85%  查看C盤文件使用情況,發現ccmcache占用了7.4G的空間  ccmcache是sccm客戶端更新時下載補丁用的緩存文件夾,將臨時補丁、驅動和其他下載的軟件存儲

fastdfs(服務器)安裝教程php擴展安裝

ofa cbc install host block lan 玩耍 lena ffi 在安裝fastdfs之前已經安裝了lnmp集成包,所以直接安裝fastdfs,之後再安裝fastdfs_nginx_model(nginx的擴展) 準備工作:下載fastdif安裝包到 /