转自:https://blog.csdn.net/zxpoiu/article/details/117258047
1.介绍
使用c++ string类不可避免会带来很多不必要的拷贝,拷贝多了必然影响性能。因此在很多高性能C++框架的实现中,都会使用StringPiece类作为string类的wrapper,该类只持有目标字符串的指针,而避免额外的拷贝。
class StringPiece { private: const char *ptr_;// 被定义为const类型,其不允许任何修改 int length_; public: // We provide non-explicit singleton constructors so users can pass // in a "const char*" or a "string" wherever a "StringPiece" is // expected. StringPiece() : ptr_(NULL), length_(0) {} StringPiece(const char *str) : ptr_(str), length_(static_cast<int>(strlen(ptr_))) {}// 自动设置长度 StringPiece(const unsigned char *str) : ptr_(reinterpret_cast<const char *>(str)), length_(static_cast<int>(strlen(ptr_))) {} StringPiece(const std::string &str) : ptr_(str.data()), length_(static_cast<int>(str.size())) {} StringPiece(const char *offset, int len) : ptr_(offset), length_(len) {} ... };
StringPiece不控制字符串的生命周期,字符串操作都是常数时间复杂度。
void clear() { ptr_ = NULL; // 在操作时只需要修改指针指向就可以,没有释放空间的操作 length_ = 0; } void set(const char *buffer, int len) { ptr_ = buffer; length_ = len; }
标签:char,const,C++,StringPiece,length,了解,str,ptr From: https://www.cnblogs.com/BlueBlueSea/p/18164787