在UE4中怎样对字符串进行转义?

例如,从txt中读取字符串,txt中的内容为 Abc \"123\" 那么读入的FString字符串用数组表示就会是 ['A', 'b', 'c', …
关注者
4
被浏览
2,189

3 个回答

在UE4中,如果需要对字符串进行转义,可以使用反斜杠 "" 来表示特殊字符。例如,如果需要在字符串中插入一个制表符(tab),可以在字符串前面加上反斜杠和字母 t,如下所示:

FString myString = "Hello\tWorld";

这样就会在字符串中插入一个制表符。同样,如果需要插入其他特殊字符,可以参考下面的表格来进行转义:

例如,如果需要在字符串中插入双引号,可以这样写:

FString myString = "The quote mark is \"";

这样就可以将双引号转义并插入到字符串中。

在UE4中,可以使用 FString::ParseEscape() 函数对字符串进行转义处理。具体操作如下:

  1. 读取字符串时,将文本中的反斜杠符号“\”替换成双反斜杠符号“\”,这是因为在C++语言中,反斜杠符号具有特殊含义,需要进行转义。
  2. 调用FString::ParseEscape()函数,将转义后的字符串作为参数传入。
  3. ParseEscape()函数会将字符串中的转义符号解析成对应的字符,例如将“\n”转义成换行符“\n”,将“\”和“"”转义成双引号“"”。
  4. 最终得到处理好的字符串,可以将其转换成字符数组或者按照需要进行其他操作。

参考实现:

FString EscapeString(const FString& InString)
    FString EscapedString = InString.Replace(TEXT("\\"), TEXT("\\\\")); // 替换反斜杠符号
    EscapedString.ParseEscape(); // 解析转义符号
    return EscapedString;
// 测试代码
FString OriginalString = TEXT("Abc\n\"123\"");
FString EscapedString = EscapeString(OriginalString);
TArray<TCHAR> CharArray;
EscapedString.GetCharArray(CharArray);
for (int32 i = 0; i < CharArray.Num(); i++)