#フォーマット
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 ドキュメント > プログラミング ガイド > ゲームプレイのプログラミング > 文字列の取り扱い