Tres cadenas comunes en UE
C++ admite dos codificaciones de cadenas: ANSI (char) y Unicode de caracteres anchos (wchar_t), pero por razones de eficiencia, UE no usa directamente el tipo de cadena nativa de C++.
UE usa TEXT
macros para usar el tipo de cadena apropiado de acuerdo con la plataforma que se está ejecutando actualmente. Por lo tanto, debe usar esta macro para envolver cadenas tanto como sea posible.
FNombre
Basado en la implementación de la tabla hash, su esencia es una identificación.
No distingue entre mayúsculas y minúsculas, el almacenamiento y la búsqueda son muy rápidos, no se pueden modificar, solo se guarda una copia del mismo contenido
FTexto
Basado en TSharedRef<ITextData>
la implementación, por lo que la eficiencia de la copia es alta
. Se distingue entre mayúsculas y minúsculas, no se puede modificar y tiene una función de localización . Por lo tanto, el tipo de texto utilizado en Slate es FText
FCadena
Se distingue entre mayúsculas y minúsculas según TArray<TCHAR>
la implementación
, se puede modificar pero significa más gastos generales
En términos de gastos generales, FName es el más ligero y FString es el más pesado.
conversión entre cadenas
de \ a | FCadena | FNombre | FTexto |
---|---|---|---|
FCadena | TestFName=FName(TestFString) | TestFText=FText::FromString(TextString) | |
FNombre | TestFString=TestFName.ToString() | TestFText=FText::FromName(TestFName) | |
FTexto | TestFString=TestFText.ToString() | ninguno |
No hay una función de conversión directa de FText a FName, puede transferirla a través de FString,
pero tenga en cuenta que la conversión aquí tiene pérdidas: las características de cada cadena ya no estarán disponibles después de la conversión a otros tipos (como la función de localización de FText y la insensibilidad a mayúsculas y minúsculas de FName)
Además, FString también se puede intercambiar con std::string, const TCHAR*:
std::string Str = "str";
FString TestFString(str.c_str());
std::string NewStr(TCHAR_TO_UTF8(*TestFString));
const TCHAR* ConstTchar = *TestFString;
Consulte los
cuatro tipos de análisis de cadenas de UE de Aery y utilice
los conocimientos básicos sobre Unicode y conjuntos de caracteres que todo desarrollador de software debe comprender (original en inglés)