自己编写的MyString实现c++中VString的一些功能

自己实现了VString中的一些功能,用以更好地理解字符串操作。希望可以互相交流。

#include <iostream>
#include <malloc.h>
#include <stdarg.h>

class MyString {
public:
	MyString(char* s) 
	{
		len = getLength(s)+1;
		str = getOneMallocString(s, len);
	}

	MyString()
	{

	}

	void destory()
	{
		free(str);
	}

	void setText(char* s)
	{
		if (str != NULL)
			free(str);
		len = getLength(s) + 1;
		str = getOneMallocString(s, len);
	}

	char* getText()
	{
		return str;
	}

	int getLength()
	{
		int num = 0;
		while (*(str+num) != '\0')
		{
			num++;
		}
		return num;
	}

	int getLength(char* s)
	{
		int num = 0;
		while (*(s + num) != '\0') {
			num++;
		}
		return num;
	}

	int getLength(const char* s)
	{
		int num = 0;
		while (*(s + num) != '\0') {
			num++;
		}
		return num;
	}

	bool isEmpty()
	{
		if (getLength() == 0)
			return true;
		else
			return false;
	}

	MyString left(int nCount)
	{
		MyString m = MyString();
		
		char* s = (char*)malloc((nCount + 1) * sizeof(char));
		int num = 0;
		while ( *(str + num) != '\0' && (num < nCount))
		{
			*(s + num) = *(str + num);
			num++;
		}
		*(s + num) = '\0';
		
		m.setText(s);
		free(s);

		return m;
	}

	/*loadString函数待开发*/

	/*大写转变为小写*/
	void makeLower()
	{
		int num = 0;
		while (*(str + num) != '\0')
		{
			if (*(str + num) >= 'A' && *(str + num) <= 'Z')
				*(str + num) += 32;
			num++;
		}
	}

	/*小写转变为大写*/
	void makeUpper()
	{
		int num = 0;
		while (*(str + num) != '\0')
		{
			if (*(str + num) >= 'a' && *(str + num) <= 'z')
				*(str + num) -= 32;
			num++;
		}
	}

	/*字符倒置*/
	void makeReverse()
	{
		int length = 0, i;
		char temp;

		length = getLength();

		for (i = 0; i < length/2; i++) {
			temp = *(str + i);
			*(str + i) = *(str + length - 1 - i);
			*(str + length - 1 - i) 
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萌哒哒虎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值