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");
}