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