上面的代码提示TArray中找不到Slice成员
时间: 2024-03-10 18:44:32 浏览: 19
很抱歉,我犯了一个错误。UE4的TArray确实没有Slice函数,Slice函数是C++11中的一个标准函数,我混淆了两者。
如果你想要截取TArray<uint8>数组中某个索引之后的元素,可以使用UE4中的Mid函数。Mid函数可以返回一个包含TArray中指定索引之后元素的新的TArray对象。具体的代码实现如下:
```cpp
TArray<uint8> OldArray = {0x01, 0x02, 0x03, 0x04, 0x05};
int32 Index = 2; // 索引值为2
TArray<uint8> NewArray = OldArray.Mid(Index+1, OldArray.Num() - Index - 1);
```
上述代码中,OldArray是原始的TArray,Index是指定的索引值。NewArray是一个新的TArray对象,它包含了OldArray中索引值为Index+1之后的元素。使用Mid函数需要指定起始索引和元素数量,这里的起始索引为Index+1,元素数量为OldArray.Num() - Index - 1。
需要注意的是,Mid函数返回的是一个新的TArray对象,它的元素类型和原始数组是一样的。在上面的代码中,原始数组是TArray<uint8>类型,Mid函数返回的新数组也是TArray<uint8>类型。如果你需要将新的数组转换为其他类型,可以使用UE4中的Cast函数。例如,如果你需要将TArray<uint8>类型转换为TArray<int32>类型,可以这样实现:
```cpp
TArray<int32> IntArray;
for (uint8 Byte : NewArray)
{
IntArray.Add(static_cast<int32>(Byte));
}
```