虚幻4学习---UE4中的字符串转换(文章来自于UE4官方文档)
String Conversions:
FString To FName
FString To Int32
Float To FString
FArrayReaderPtr To FString
FString To char * --- ( TCHAR_TO_ANSI() )
FString To TCHAR *
FString To Array<uint8>
FString To FText (新增)
Overview
- FString to FName
- std::string to FString
- FString and FCString Overview
- FString to Integer
- FString to Float
- Float/Integer to FString
- UE4 C++ Source Header References
All the header files I refer to in this tutorial are found in
your UE4 install directory / Engine / Source
you will probably want to do a search for them from this point :)
Converting FString to FNames
Say we have
FString TheString = "UE4_C++_IS_Awesome";
To convert this to an FName you do:
FName ConvertedFString = FName(*TheString);
std::string to FString
#include <string>//....some function {std::string TestString = "Happy"; FString HappyString(TestString.c_str()); }
FString to std::string
#include <string>//.... FString UE4Str = "Flowers"; std::string MyStdString(TCHAR_TO_UTF8(*UE4Str));
FCString Overview
Converting FString to Numbers
The * operator on FStrings returns their TCHAR* data which is what FCString functions use.
If you cant find the function you want in FStrings (UnrealString.h) then you should check out the FCString functions (CString.h)
I show how to convert from FString to FCString below:
Say we have
FString TheString = "123.021";
FString to Integer
int32 MyShinyNewInt = FCString::Atoi(*TheString);
FString to Float
float MyShinyNewFloat = FCString::Atof(*TheString);
Note that Atoi and Atof are static functions, so you use the syntax FCString::TheFunction to call it :)
Float/Integer to FString
FString NewString = FString::FromInt(YourInt);FString VeryCleanString = FString::SanitizeFloat(YourFloat);
Static functions in the UnrealString.h :)
UE4 Source Header References
CString.h UnrealString.h NameTypes.h
See CString.h for more details and other functions like
atoi64 (string to int64) Atod (string to double precision float)
For a great deal of helpful functions you will also want to look at
UnrealString.h for direct manipulation of FStrings!
NameTypes.h
Enjoy!
------------------------------------------------------------------------------
- uint8 data[512];
- FMemory::Memzero(data, 512);
- FMemory::Memcpy(data, ArrayReaderPtr->GetData(), ArrayReaderPtr->Num());
- FString str = ((const char*)data);
Array<uint8> to FString
- TArray<uint8> content;
- ...
- const std::string cstr(reinterpret_cast<const char*>(content.GetData()), content.Num());
- FString frameAsFString = cstr.c_str();
- UE_LOG(VRSLog, Warning, TEXT("%s"), *frameAsFString);
FString to char * TCHAR_TO_ANSI()
- int BP_GetColumnIndex(int resultSet, FString columnName)
- {
- return GetColumnIndex(resultSet, TCHAR_TO_ANSI(*columnName));
- }
- int GetColumnIndex(int iResult, const char* columnName)
- {
- }
FString to TCHAR *
- int BP_GetColumnIndex(int resultSet, FString columnName)
- {
- return GetColumnIndex(resultSet, *columnName);
- }
- int GetColumnIndex(int iResult, const TCHAR* columnName)
- {
- }
FString To Array<uint8>
- FString StrData;
- const TCHAR* StrPtr = *StrData;
- FTCHARToUTF8 UTF8String(StrPtr);
- int32 CTXSize = UTF8String.Length();
- TArray<uint8> URLData;
- URLData.SetNum(CTXSize);
- memcpy(URLData.GetData(), UTF8String.Get(), CTXSize);
- FString Str = TEXT("str");
- FText Text = FText::FromString(Str);
FText To FString
- FString Name = NameDesc->GetText().ToString();