qicosmos/iguana

json字符串解析时有个问题不清楚,想请问下作者

ottoGithub opened this issue · 2 comments

struct string_ref {
                char const *str;
                size_t len;

                int length() const {
                    auto size = len;
                    for (size_t i = 0; i < len; ++i) {
                        if (str[i] == 92 || str[i] == 116 || str[i] == 50) // 92: ‘\’, 116: ‘t’, 50: ‘2’
                            size -= 1;
                    }

                    return static_cast(size);
                }

                bool operator!=(const char *data) const {
                    auto const str_length = strlen(data);
                    if (len != str_length) {
                        if (length() != str_length)
                            return true;
                    }

                    for (size_t i = 0; i < str_length; ++i) {
                        if (str[i] != data[i]) {
                            return true;
                        }
                    }
                    return false;
                }
            };
        } 

不知道上面的length() 函数中为何当str[i]=92,116,50的时候size要-1?

这里之前考虑的是处理一些特殊字符,现在看来没必要,已经去掉了。

之前是想处理key中含空格等特殊字符的情况,现在看来没必要,key就应该严格比较。