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

More than 1 year has passed since last update.


フォーマット


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