建立一个String_Interator类把一个字符串中的数字字符转化为正整数,具体要求如下
(1)私有数据成员
char* s; 用动态空间存放字符串
(2)公有成员函数
String_Interator(char* str); 用参数str初始化数据成员
operator int(); 转换函数,将数据成员s转化整数,并返回该数
void show(); 输出数据成员s
~String_Interator(); 释放动态空间
(3)任务描述
在主函数中定义的类进行测试,定义字符数组,把由键盘输入的字符串“AB123 c00d45ef“”存入数组,
并用该数组初始化String_Interator类的对象调用show()函数输出数据成员s,然后把对象赋值给整形变
量n,并输出转结果如下所示;
请输入字符:AB123 c00d45ef
字符串为:AB123 c00d45ef
转换得到的整数为:1230045
#include<iostream>
#include<string>
using namespace std;
class String_Interator
{
private:
char* s;
public:
String_Interator(char* str);
operator int();
void show();
~String_Interator();
};
String_Interator::String_Interator(char* str)
{
s = new char(sizeof(str)); //开辟动态空间
s = str; //将str传入类对象中
}
String_Interator::operator int()
{
int k = 0,l;
char* f = s;
char*x=s;
while (*f != '\0') //判断元素是否遍历
{
if (*f >= '0' &&*f <= '9')
k++; //记录有效元素个数(0~9)
f++;
}
int a = 0, c = 0;
while (*x != '\0')
{
if (*x >= '0' && *x <= '9')
{
l = *x - '0'; //还原字符为整数
c=l;
for (int j = 0; j < k-1; j++)
{
c = c * 10; //叠加得到最后的整数
}
a = a + c;
k--;
}
x++;
}
cout << "转换得到的整数为:" << a << endl;
return 0;
}
void String_Interator::show()
{
cout << "字符串为:" << s << endl;
}
String_Interator::~String_Interator()
{
delete[]s; //释放s空间
}
int main()
{
string a;
int c;
cout << "请输入字符串:" << endl;
getline(cin, a); //得到带有空格的字符串,注意getlinea()函数只能传入string中;
c = sizeof(a); //得到字符串长度
char* b = new char[c]; //创建指针用来初始化类
for (int i = 0; i < c; i++)
b[i] = a[i]; //将a中的值赋给b;!!!这一步非常关键
String_Interator A(b);
A.show();
A.operator int();
return 0;
}
``