最近心血来潮,通过参考书目和网上资料,实现了下 C++ 标准库 std::string 的部分功能。
话不多说,直接上代码
#ifndef FBC_STL_STRING_HPP_
#define FBC_STL_STRING_HPP_
#include <string.h>
namespace fbcstd {
class String{
public:
String();
String(const char* str);
String(const char* str, size_t n);
String(const String &str);
String(const String &str, size_t pos, size_t len = npos);
String(size_t n, char c);
~String();
const char* c_str() const;
size_t length() const;
size_t size() const;
char& operator [] (size_t pos);
const char& operator [] (size_t pos) const;
String& operator = (const String& str);
String& operator = (const char* str);
String& operator = (char c);
String& operator += (const String& str);
String& operator += (const char* str);
String& operator += (char c);
String& append(const String& str);
String& append(const char* str);
String& assign(const String& str);
String& assign(const char* str);
char& at(size_t pos);
const char& at(size_t pos) const;
void clear();
int compare(const String& str) const;
int compare(const char* s) const;
const char* data() const;
bool empty() const;
static const size_t npos = -1;
private:
size_t size_;
char* buffer_;
};
inline String::String() {
size_ = 0;
buffer_ = new char[1];
buffer_[0] = '