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 TEXT
Makros, 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)