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

}
``
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章