BinaryStream has never had a ReadCString or WriteCString function. Unless the file is 10s of megabytes, just read it into a memoryblock.
But there is no reason you would ever need to. CString exists for use in Declares and Xojo automatically converts String to CString and back as necessary.
Reading a RAR header is not simple because many fields don’t have fixed positions.
For example, a file name uses 2 fields, length+name, but differently of Pascal, both have a variable size.
Length use VInt, a special kind of unsigned integer of variable size, if the filename in bytes has less then 128 bytes, VInt is a UInt8, if it is a bit larger, UInt16, and keeps growing until UInt64.