string.h

来自「jedit 一个小型java编译器的源码」· C头文件 代码 · 共 76 行

H
76
字号
#ifndef SSTRING_H
#define SSTRING_H
#include<string.h>
#include<iostream.h>

template<int bsz=0>
class SString
{
	char buf[bsz+1];
	char *s;
public:
	SString(const char* S=""):s(buf)
	{
		if(!bsz)
		{
			s=new char[strlen(S)+1];
			strcpy(s,S);
		}
		else
		{
			buf[bsz]=0;
			strncpy(s,S,bsz);
		}
	}
	SString(const SString& rv):s(buf)
	{
		if(!bsz)
		{
			s=new char[strlen(rv.s)+1];
			strcpy(s,rv.s);
		}
		else
		{
			buf[bsz]=0;
			strncpy(s,rv.s,bsz);
		}
	}
	SString& operator=(const SString& rv)
	{
		if(&rv==this) return *this;
		if(!bsz)
		{
			delete s;
			s=new char[strlen(rv.s)+1];
		}
		strcpy(s,rv.s);
		return *this;
	}
	~SString()
	{
		if(!bsz) delete []s;
	}
	int operator==(const SString& rv)const
	{
		return !strcmp(s,rv.s);
	}
	int operator!=(const SString& rv)const
	{
		return strcmp(s,rv.s);
	}
	int operator>(const SString& rv)const
	{
		return !stricmp(s,rv.s)>0;
	}
	int operator<(const SString& rv)const
	{
		return stricmp(s,rv.s)<0;
	}
	char *str()const{return s;}
	friend ostream& operator<<(ostream& os,const SString<bsz>& S)
	{
		return os<<S.s;
	}
};
typedef SString<> Hstring;
#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?