**
用c++简单对String类重载
**
完成功能:
-
创建简单的String类
-
获取字符串的长度
-
将小写变为大写
-
大写变为小写
-
踩才过的坑
-
刚开始未对赋值运算符重载,造成堆栈错误
#include <iostream>
using namespace std;
class String
{
char* content;
int len;
public:String() {
char c[50];
cout << "plz input a string:";
cin >> c;
int i;
for (i = 0; c[i] != '\0'; i++)
len = i+1;
content = new char[len + 1];
strcpy(content, c);
}
~String() {
if (content != NULL)
{
delete []content;
content = NULL;
}
}
void toUpperCase()
{
for (int i=0; i < len; i++)
{
if(content[i]<='z'&&content[i]>='a')
content[i]=content[i]+'A'-'a';
}
}
void toLowerCase()
{
for (int i = 0; i < len; i++)
{
if (content[i] <= 'Z' && content[i] >= 'A')
content[i] = content[i] + 'a' - 'A';
}
}
String(const String &str)
{
len = str.len;
delete[] content;
content = new char[len + 1];
strcpy(content,str.content);
}
char* getString()
{
return content;
}
void show()
{
cout << content << " has " << len << " charactors \n";
}
String & operator=(const String &str)
{
if (strcmp(content, str.content))
return *this;
delete[] content;
content = new char[str.len + 1];
strcpy(content, str.content);
return *this;
}
};
int main()
{
String a, b;
a.show();
b.show();
a.toUpperCase();
cout << "to uppercase: \n";
a.show();
a.toLowerCase();
cout << "to lowercase: \n";
a.show();
a = b;
cout << "将b赋值给a: ";
a.show();
system("pause");
return 0;
}