杭州消费卡哪里能办:设计一个字符串类 编写一个main()函数,测试你的字符串类的各种功能。

来源:百度文库 编辑:神马品牌网 时间:2024/04/28 19:23:52
设计一个字符串类,功能如下:

1) 能够用 “+” 来处理两个字符串的相加

2) 具有在一个字符串中搜索一个字符的功能

3) 具有在一个字符串中搜索另一个字符串的功能

4) 编写一个main()函数,测试你的字符串类的各种功能。

请大侠们帮帮忙啦!感激不尽!
能不能提供用C++的程序.我要的是C++!谢谢

java String类 这些方法全有,下个jdk自己看

// zd_50.cpp : Defines the entry point for the console application.
//

#include <iostream.h>
#include <string.h>
#include <stdio.h>

/*创建一个字符串类:String*/

class String{
public:
String(const char* str = NULL); //构造函数之一
String(const String& another); //构造函数之二
void input_str(); //字符串输入
String& operator +(const String& rhs); //重载加法运算符
void print(); //字符串输出
int findchar(int c);//查找字符
int findstr(const char *);//查找字符串

private:
char *m_data;
char *addstr;
};

/*构造函数之一*/

String::String(const char* str)
{
if(str == NULL) //如果输入为空字符串,则添加“\0”表示空串。
{
m_data = new char[1];
m_data[0] = '\0';
}
else //如果输入非空串,复制该字符串。
{
m_data = new char[strlen(str) + 1];
strcpy(m_data,str);
}
}

/*构造函数之二*/

String::String(const String& another)
{
m_data = new char[strlen(another.m_data) + 1];
strcpy(m_data,another.m_data);
}

/*输入字符串*/

void String::input_str()
{
char str[256];
printf("请输入字符串:");
cin>>str;
printf("\n");
m_data = new char[strlen(str) + 1];
strcpy(m_data,str);
}

/*在字符串中查找一个字符,如果存在返回位置,不存在返回-1*/
int String::findchar(int c)
{
char *pdest;
int result;
pdest=strchr(m_data,c);
result = pdest - m_data + 1;
if(pdest != NULL)
return result;
else
return -1;
}

/*在字符串中查找一个字符串,如果存在返回位置,不存在返回-1*/
int String::findstr(const char* str)
{
char *pdest;
int result;
pdest = strstr( m_data, str );
result = pdest - m_data + 1;
if( pdest != NULL )
return result;
else
return -1;

}

/*连接后的字符串输出*/

void String::print()
{
if(addstr == NULL) printf("No Content!\n");
else
{
for(char *c = addstr; *c != '\0'; c++)
printf("%c", *c);
printf("\n");
}
}

//"+"运算符重载

String& String::operator+(const String& rhs)
{
addstr=new char[strlen(m_data)+strlen(rhs.m_data)+1];
strcpy(addstr,m_data);
strcat(addstr,rhs.m_data);
return *this;
}

/*开始演示字符串类*/

void main()
{
String S1;
String S2;

S1.input_str();
S2.input_str();

S1+S2;

S1.print();

S1="1234abc";
int pos=0;
pos=S1.findchar('c');
if(pos>0)
printf("the position of 'a' is %d\n",pos);
else
printf("'a' is not in S1\n");

pos=S1.findstr("abc");
if(pos>0)
printf("the position of \"abc\" is %d\n",pos);
else
printf("\"abc\" is not in S1\n");

}

运行结果:

请输入字符串:123c4

请输入字符串:adf

123c4adf
the position of 'c' is 4
"abc" is not in S1
Press any key to continue