专业网站建设怎么样/重庆快速排名优化
string是C++标准库的重要部分,主要用于字符串处理。这里我们自己实现一个简单版本的 string.
一 思路
string 类中应该包含如下:
1. 类成员变量:char* m_data,利用 char* 指针存放字符串
2. 成员函数:
2.1 size(), 用于返回字符串的长度,不包含字符 '\0'
2.2 operator[](index) ,返回字符串中任意位置的字符
2.3 c_str() ,将 my_string 转为 char*,并返回
二 具体实现
// my_string.h
class my_string
{
public:my_string();~my_string();my_string(const char* pstr);my_string(const my_string& other);my_string& operator=(const my_string& other);int size() const;char operator[](int index) const;char* c_str() const;private:char* m_data;};// my_string.cpp
#include "my_string.h"
#include<string.h>
#include<stdio.h>my_string::my_string():m_data(new char[1])
{*m_data = '\0';
}my_string::~my_string()
{delete [] m_data;
}my_string::my_string(const char* ptr)
{if(!ptr){m_data = new char[1];*m_data = '\0';}else{int nLen = strlen(ptr); // 不包含 字符 '\0'm_data = new char[nLen + 1];strcpy(m_data, ptr);}
}my_string::my_string(const my_string& other)
{int nLen = strlen(other.m_data);m_data = new char[nLen + 1];strcpy(m_data, other.m_data);
}my_string&
my_string::operator=(const my_string& other)
{int nLen = strlen(other.m_data);m_data = new char[nLen+1];strcpy(m_data, other.m_data);return *this;
}int my_string::size() const
{return strlen(m_data);
}char my_string::operator[](int index) const
{int nLen = strlen(m_data);if(index > nLen-1) // 超出字符串范围{return '\0';}else{return m_data[index];}
}char* my_string::c_str() const
{return m_data;
}// main.cpp
void testMyString()
{my_string str("abc");std::cout << str.size() << std::endl;my_string s2 = str;std::cout << str.size() << std::endl;std::cout << s2.c_str() << std::endl;}int main()
{testMyString();return 0;
}