LoginSignup
10
9

More than 3 years have passed since last update.

Unreal Engine 4メモ:文字列操作系TIPs

Last updated at Posted at 2018-04-05

フォーマット

sample.cpp
FString text = "文字列";
FString message = FString::Format(TEXT("文字列 {0} 文字列"), { *text });

FString::Printfは4.20でdeprecatedになりました。

FStringからc標準文字列への変換

TCHAR_TO_ANSIマクロを使うと簡単です。

HowToCastFStringToAnsiChar.cpp
void SampleMain()
{
    FString needCastString;
    SampleFunction(TCHAR_TO_ANSI(*needCastString));

    // FStringのログ出力
    UE_LOG(LogTemp, Warning, TEXT("[LOG] : %s\n"), (const char*)TCHAR_TO_ANSI(*needCastString));
}

void SampleFunction(const char* columnName)
{
    // process...
}

フォーラム「How can I cast FString to Char *?」

FNameからc標準文字列への変換

FName::GetPlainANSIString()を使用します。

HowToCastFNameToAnsiChar.cpp
void SampleMain()
{
    FName needCastString;
    SampleFunction(needCastString.GetPlainANSIString());

    // FNameのログ出力
    UE_LOG(LogTemp, Warning, TEXT("[LOG] : %s\n"), (const char*)needCastString.GetPlainANSIString());
}

void SampleFunction(const char* columnName)
{
    // process...
}

その他のエンコード変換系

名前が読んだままなので特に解説しませんが、変換マクロです。便利なので使いましょう。

TCHAR_TO_ANSI(str)
TCHAR_TO_OEM(str)
ANSI_TO_TCHAR(str)
TCHAR_TO_UTF8(str)
UTF8_TO_TCHAR(str)

フルパス取得

先頭に「/」が入ってたりすると相対パスと判定されなかったりするのでFPaths::IsRelative(RelativeFilePath)を使って事前に本当に相対パスなのかチェックすべし(内部的にこれでチェックされている)。また、相対パスでなかった場合元の文字列が返されるので「あれ?なんで?」ってなっても気づきにくい。

Sample.cpp
check(FPaths::IsRelative(RelativeFilePath));
FPaths::ConvertRelativePathToFull(RelativeFilePath);

参照

Unreal Engine 4 ドキュメント > プログラミング ガイド > ゲームプレイのプログラミング > 文字列の取り扱い


書きかけの項目
FName
NAME_None

10
9
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9