建立一个String_Interator类把一个字符串中的数字字符转化为正整数

建立一个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;

}
``
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值