【UE】Analyse von Zeichenfolgen und gegenseitigen Konvertierungsmethoden

Drei gängige Zeichenfolgen in UE

C++ unterstützt zwei String-Kodierungen: ANSI (char) und Wide-Character-Unicode (wchar_t), aber aus Effizienzgründen verwendet UE nicht direkt den nativen String-Typ von C++

UE verwendet TEXTMakros, um den entsprechenden Zeichenfolgentyp entsprechend der aktuell ausgeführten Plattform zu verwenden. Daher sollten Sie dieses Makro verwenden, um Zeichenfolgen so weit wie möglich umzubrechen.

FName

Basierend auf der Implementierung der Hash-Tabelle ist ihr Kern eine ID.
Groß- und Kleinschreibung wird nicht beachtet , Speicherung und Suche sind sehr schnell, können nicht geändert werden, es wird nur eine Kopie desselben Inhalts gespeichert

FText

Basierend auf TSharedRef<ITextData>der Implementierung ist die Effizienz des Kopierens hoch.
Es unterscheidet zwischen Groß- und Kleinschreibung, ist nicht änderbar und verfügt über eine Lokalisierungsfunktion . Daher ist der in Slate verwendete Texttyp FText

FString

Abhängig von der TArray<TCHAR>Implementierung wird die Groß-/Kleinschreibung berücksichtigt
. Sie kann geändert werden, bedeutet jedoch mehr Aufwand

Bezüglich des Overheads ist FName am leichtesten und FString am schwersten.

Konvertierung zwischen Zeichenfolgen

von bis FString FName FText
FString TestFName=FName(TestFString) TestFText=FText::FromString(TextString)
FName TestFString=TestFName.ToString() TestFText=FText::FromName(TestFName)
FText TestFString=TestFText.ToString() keiner

Es gibt keine direkte Konvertierungsfunktion von FText in FName. Sie können sie über FString übertragen.
Beachten Sie jedoch, dass die Konvertierung hier verlustbehaftet ist: Die Eigenschaften jeder Zeichenfolge sind nach der Konvertierung in andere Typen nicht mehr verfügbar (z. B. die Lokalisierungsfunktion von FText und die Groß-/Kleinschreibung von FName).

Darüber hinaus kann FString auch mit std::string, const TCHAR* ausgetauscht werden:

std::string Str = "str";

FString TestFString(str.c_str());

std::string NewStr(TCHAR_TO_UTF8(*TestFString));

const TCHAR* ConstTchar = *TestFString;

Sehen Sie sich
die vier Arten der UE-String-Analyse von Aery an und nutzen Sie
das Grundwissen über Unicode und Zeichensätze, das jeder Softwareentwickler verstehen muss (englisches Original)

Guess you like

Origin blog.csdn.net/weixin_44559752/article/details/128482788