@Override
    public String readString() throws IOException
    {
        final int size = readRawVarint32();
        if (size <= (bufferSize - bufferPos) && size > 0)
        {
            // Fast path: We already have the bytes in a contiguous buffer, so
            // just copy directly from it.
            final String result = STRING.deser(buffer, bufferPos, size);
            bufferPos += size;
            return result;
        }
        else
        {
            // Slow path: Build a byte array first then copy it.
            return STRING.deser(readRawBytes(size));
        }
    }
Read a {@code string} field value from the stream.
protostuff-core/src/main/java/io/protostuff/CodedInput.java