文字列の取り扱い

UE4 で利用可能な文字列クラスの概要と FName、FText、FString の参照ガイド

Windows
MacOS
Linux
On this page

FName

FNames は、 コンテンツ ブラウザ で新規アセットに名前を付けたり、ダイナミック マテリアル インスタンスのパラメータを変更する場合、またはスケルタル メッシュのボーンにアクセスする時に使います。再利用する場合でも、所定の文字を一回だけデータ テーブルに格納するので、 非常に負荷の軽いシステムです。

Fnames は大文字と小文字を区別しません。変更も操作もできません。Fnames のストレージ システムと静的な性質によって、 キーによる参照と Fnames へのアクセスが速いです。FNames サブシステムのもう 1 つの特徴は、文字列から Fname への変換をハッシュ テーブルで素早く行うことです。

FText

Unreal Engine 4 (UE4) における テキスト ローカライゼーション の主要なコンポーネントは FText クラスです。次の機能を提供することによりテキスト ローカライゼーションをサポートしているため、すべてのユーザー向けテキストはこのクラスを使用する必要があります。

FText にはローカライズされていない、または「インバリアント カルチャ」のテキストを作成する AsCultureInvariant 関数 (または INVTEXT マクロ) も用意されています。これは、外部 API のプレーヤー名をユーザー インターフェースに表示できる形式に変換する場合などに役立ちます。

FText::GetEmpty()」、または単に「FText()」を使用して空白の FText を作成することができます。

FString

FNameFText とは異なり、FString は、検索や修正、他の文字列との比較を行うことが可能です。ただし、これらの操作をすると、FStrings の負荷は不変文字列クラスに比べて大きくなります。FName オブジェクトと FText オブジェクトは共有の文字配列にインデックスを格納しますが、FString オブジェクトはそれぞれの独自の文字配列を格納するためです。

Printf

FString 関数の`PrintfFString オブジェクトのフォーマット引数指定子を C++ printf 関数として作成することができます。同様に UE_LOG マクロは、実行中の UE4 ビルドの種類に応じて printf` 形式の文字列、ログ アウトプット、ログ ファイルを画面に印字します。

これらの文字列と変換を使用するには、必要なヘッダ ファイルをインクルードする必要があることを覚えておいてください。必要なヘッダ ファイルのリストは、各文字列の API リファレンス ページで確認できます。

変換

変換元

変換先

FName

FString

TestHUDString = TestHUDName.ToString();

FName

FText

TestHUDText = FText::FromName(TestHUDName);

FName -> FText が有効な場合はありますが、FNames のコンテンツは FText の「自動ローカライゼーション」 の効果がないことに注意してください。

FString

FName

TestHUDName = FName(*TestHUDString);

FString -> FName は危険です。FName は大文字、小文字を区別せず、変換は不可逆であるためです。

FString

FText

TestHUDText = FText::FromString(TestHUDString);

FString -> FText が有効な場合はありますが、FStrings のコンテンツは FText の「自動ローカライゼーション」 の効果がないことに注意してください。

FText

FString

TestHUDString = TestHUDText.ToString();

FText -> FString は危険です。いくつかの言語では不可逆な変換である可能性があるためです。

FText

FName

FText から FName への直接変換はありません。かわりに、FString に変換し、次に FName に変換します。

FText -> FString -> FName は、危険です。FName はケース インセンシティブ、変換は不可逆であるためです。

FString

int32

int32 TestInt = FCString::Atoi(*MyFString);

FString

float

float TestFloat = FCString::Atof(*MyFString);

int32

FString

FString TestString = FString::FromInt(MyInt);

float

FString

FString TestString = FString::SanitizeFloat(MyFloat);

エンコード

一般的に、文字列変数のリテラルを設定する場合、TEXT() マクロを使用するようにします。TEXT() マクロを指定しない場合、リテラルは ANSI を使用してエンコードされます。 ANSI はサポートされる文字が非常に制限されます。FString に渡された ANSI リテラルは TCHAR (ネイティブの Unicode エンコード) に変換される必要があります。そのため、TEXT() を使用した方が効率的です。

エンコードの詳しい情報は「文字エンコード 」を参照してください。

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback