19.试定义一个类STR,实现判断一个字符串是否为合法的C++标识符。

19.试定义一个类STR,实现判断一个字符串是否为合法的C++标识符。C++的标识符只能由数字、字
母和下划线构成,且首字符不能为数字字符。要求如下:(1)私有数据成员
char*s;待判断的字符串。 int yn;存储判断结果。
(2) 公有成员函数 
STR(char*t):构造函数,初始化私有的数据成员。
~STRO:析构函数:释放对象存储矩阵时所用内存空间。 intalph(charc):判断字符c是否为英文字母。 
intnum(charc):判断字符c是否为数字字符。 voidprint():按输出示例的格式输出数据成员
(3)在主函数中对该数进行测试输出示例:
4abc1不是一个合法的标识符! 
ab c不是一个合法的标识符!
123 是一个合法的标识符!
$abc 不是一个合法的标识符! 

#include<iostream>
using namespace std;
class STR
{
private:
	char* s;
	int yn;
public:
	STR(const char *t)
	{
		this->yn = 1;
		s = new char[strlen(t) + 1];
		strcpy_s(s, strlen(t) + 1, t);
	}
	~STR()
	{
		delete[]s;
	}
	int alph(char c)
	{
		if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')
		{
			return true;
		}
		else
			return false;
	}
	int num(char c)
	{
		if (c >= '0' && c <= '9')
			return true;
		else
			return false;
	}
	void test()
	{
		if (num(*s))
		{
			this->yn = 0; return;
		}
		char* p = s;
		for ( p = s; *s; p++)
		{
			if (num(*p))
				continue;
			if (alph(*p))
				continue;
			if (*p == '_')
				continue;
			break;
		}
		if (*p)
			this->yn = 0;
		else
			return;
	}
	void print()
	{
		if (this->yn)
		{
			cout << this->s << "  是一个合法的标识符!" << endl;
		}
		else
			cout << this->s << "  不是一个合法的标识符!" << endl;
	}
};
int main()
{
	STR s1("4abc1"),s2("ab c"),s3("_134"),s4("$abc");
	s1.test();
	s2.test();
	s3.test();
	s4.test();
	s1.print();
	s2.print();
	s3.print();
	s4.print();
	system("pause");
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值