std::string 的 struct
逆 c++ 的时候经常碰到 std::string 比较烦
以下是 msvc10 的 std::basic_string 的 struct:
template<typename T>
struct basic_string_vc10
{
union
{
T* ptr; // size is < 0x10
T data[1];
uint8_t raw[16];
};
size_t size;
size_t capacity;
};
template<typename T>
T *basic_string_data_vc10(basic_string_vc10<T> *str)
{
if (sizeof(T) * str->size > 0x10)
return str->ptr;
return str->data;
}
待续 ...