UE4
Unreal
UnrealEngine
UnrealC++
UnrealEngine4

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

フォーマット

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

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...
}

フルパス取得

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

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


書きかけの項目
FName
NAME_None