strcpy函数和string类的实现

1 strcpy函数实现

void* memcpy1(void *dst,const void *src,int count){

	assert(dst != NULL && src!= NULL && count>=0);
	void *temp = dst;
	char *pdst = (char*)dst;
	char *psrc = (char*)src;
	if(pdst>=psrc && pdst <= psrc+count-1)
	{
		pdst = pdst + count -1;
		psrc = psrc + count -1;
		while (count--)
			*pdst-- = *psrc--;
	}
	else
	{
		while(count--)
			*pdst++ = *psrc++;
	}
	return temp;
}

char* strcpy1(char *dst,const char *src){

	assert(dst != NULL && src!= NULL);
	char *temp = dst;
	memcpy1(dst,src,strlen(src)+1);
	return temp;
}

2 string 类的部分实现

class MyString{
public:
	friend ostream& operator<<(ostream&,const MyString&);
	MyString(const char *str = NULL){
		if(NULL == str)
			m_data = 0;
		else
		{
			m_data = new char[strlen(str)+1];
			strcpy(m_data,str);
		}

	}
	MyString(const MyString & string)
	{
		if(string.m_data == 0 || string.m_data == NULL)
			m_data = 0;
		else
		{
			m_data = new char[strlen(string.m_data)+1];
			strcpy(m_data,string.m_data);
		}
	}
	MyString& operator=(const MyString &string){

		if(this != &string)
		{
			char *temp = m_data;
			if(string.m_data==0 || string.m_data == NULL)
				m_data = 0;
			else
			{
				m_data = new char[strlen(string.m_data)+1];
				strcpy(m_data,string.m_data);
			}
			delete []temp;
		}

		return *this;
	}
private:
	char *m_data;
};
时间: 2024-10-18 06:52:34

strcpy函数和string类的实现的相关文章

string 类操作的重载实现及其提供的其他常用成员函数

目录 1,string 类操作的重载实现 2,String类提供的其他常用成员函数 @ 1,string 类操作的重载实现 /* string 类操作的重载实现 */ class CMyString { public: CMyString(char *ptr = NULL) { if (ptr == NULL) { mpStr = new char[1]; *mpStr = '\0'; } else { mpStr = new char[strlen(ptr) + 1]; strcpy(mpSt

c++中string类的基本功能的实现(1)

1.传统的实现string类的方法 优点:程序简单易懂 缺点: 1)在实现其拷贝构造和赋值的操作时多次的调用new动态的开辟空间,因此也需要多次的通过delete来释放空间.如果处理不当还容易造成内存泄漏. 2)程序的一致性比较差 #include <iostream> #include <string> using namespace std; class String  { public: // 构造函数 String(char *str = "") :_s

全面深入介绍C++字符串:string类

http://blog.csdn.net/liuliming3000/article/details/1809385 1 从C到C++ string类 2 string类的构造函数 3 string类的字符操作 4 string的特性描述 5 string类的输入输出操作 6 string的赋值 7 string的连接 8 string的比较 9 string类的查找函数 10 string类的替换函数 11 string类的插入函数 12 string类的删除函数 13 string类的迭代器

从string类的实现看C++类的四大函数

很久之前参加过一次面试,记得当时面试官问过我一个很基础的代码题:实现string类的四大基本函数! 一个C++类一般至少有四大函数,即构造函数.拷贝构造函数.析构函数和赋值函数,一般系统都会默认.但是往往系统默认的并不是我们所期望的,为此我们就有必要自己创造他们.在创造之前必须了解他们的作用和意义,做到有的放矢才能写出有效的函数. 1 #include <iostream> 2 3 class CString 4 { 5 friend std::ostream & operator&l

C++ string类及其函数的讲解

文章来源于:http://www.cnblogs.com/hailexuexi/archive/2012/02/01/2334183.html C++中string是标准库中一种容器,相当于保存元素类型为char的vector容器(自己理解),这个类提供了相当丰富的函数来完成对字符串操作,以及与C风格字符串之间转换,下面是对string一些总结<引用> 一,C语言的字符串 在C语言里,对字符串的处理一项都是一件比较痛苦的事情,因为通常在实现字符串的操作的时候都会用到最不容易驾驭的类型——指针.

string类的两种实现方法及string的一些成员函数的实现

string的第一种实现方法: #include<iostream> using namespace std; class String { public:      String(char *str="")//构造函数       :_str(new char[strlen(str)+1])      {           strcpy(_str, str);      }      String(const String& str)//拷贝构造函数,实现深拷贝

【编程题】编写String类的构造函数、拷贝构造函数、析构函数和赋值函数

[编程题]编写String类的构造函数.拷贝构造函数.析构函数和赋值函数 [题目]:请编写如下4个函数 1 class String 2 { 3 public: 4 String(const char *str = NULL);// 普通构造函数 5 String(const String &other); // 拷贝构造函数 6 ~ String(void); // 析构函数 7 String & operate =(const String &other);// 赋值函数 8

tchar 输入输出类 和 string 类 函数简单说明 总结各种前缀后缀

标准输入输出printf类_tprintf : 类同printf_tprintf_l : 类同printf, 但是"_l"表示第二个参数是一个locale.locale是操作系统对语言设定的参数, 这个会影响ANSI字符的语言识别, 在Unicode下应该是无差别的_tprintf_s : 类图printf, 但是和_tprintf相比, _tprintf_s多会做一些检查工作.如果你的"format string"是动态的, 这个能帮助你._tprintf_s_l

20140902 字符串拷贝函数 右旋转字符串 string类的编写

1.strncpy字符串拷贝函数 //strncpy的程序 #include<stdio.h> #include<assert.h> char *strncpy1(char *strDest,const char *strSrc,int n) { assert((strDest!=NULL)&&(strSrc!=NULL)&&n>0); if(strDest==strSrc) return strDest; char *Address=strD