codeblocks
gcc version 4.9.2 (tdm-1)
构造方法 | 描述 |
---|---|
String(char *s,int len) | 构造方法初始化数据 |
成员方法 | 描述 |
---|---|
char *getStr() | 获取当前的String(打印) |
int getLength() | 获取当前String的长度 |
char *Strcpy(char *s) | 字符串的复制 |
char *Strcat(char *s) | 字符串的连接 |
int Compare(char *b) | 字符串的比较 |
char *substring(int sub_start,int sub_end) | 指定起始终止位置求子串 |
void exchange(char *s) | 字符串的交换 |
int BF_Find_String(char *s) | 在当前字符串String中查找子串 |
int indexOf(char index) | 查找某字符在当前String中第一次出现的位置 |
void toUpperCase() | 字符串小写转大写 |
void toLowerCase() | 字符串大写转小写 |
char *trim() | 消除字符串中的空格 |
char *SplitStr() | 消除{,!”“#$%&’()*+,-./}的字符 |
void set(int index,char letter) | 在指定字符串的指定位置添加某字符 |
操作文件方法 | 描述 |
---|---|
void write_copy(char s1[30]) | 字符串复制结果写入文件 |
void write_connect(char s1[30]) | 字符串连接结果写入文件 |
void write_compare(char s1[15],char s2[15],int flag) | 字符串比较(compare)结果写入文件 |
void write_substring(char s1[15],char s2[15],int sub_start,int sub_end) | 将所求子串写入文件 |
void write_exchange(char s1[15],char s2[15],int flag) | 字符串交换前后数据写入文件 |
void write_BF_Find_String(char str[15],char s[15],int find_string_value) | 字符串的查找结果写入文件 |
void write_indexOf(char str[15],char index,int pos) | 将某字符在字符串第一次出现的位置写入文件 |
void write_LowerAndUpperCase(char s1[15],char s2[15]) | 将转换大小写结果写入文件 |
void write_trim(char s1[15],char s2[15]) | 消除字符串中的空格后结果写入文件 |
void write_SplitStr(char s1[15],char s2[15]) | 消除常用标点符号,!”“#$%&’()*+,-./的结果写入文件 |
void write_set(char s1[15],char s2[15],int index,char one_letter) | 将某字符添加到某字符串的某个位置的结果写入文件 |
void write_reverse_str(char s1[15],char s2[15]) | 将字符串翻转后写入文件 |
void write_initvalue(int n) | 起始写入文件的字符串 |
char * read(int count) | 读取文件指定位置的字符串 |
/*************************************************************************
> File Name: 重写string类
> Author: 浅然
> Mail: [email protected]
> Created Time: 2018年05月21日 星期一 14时11分34秒
************************************************************************/
#include
#include
#include
#include
using namespace std;
char s[15];//读取文件中的数据时存储在s数组中
/*
*String
*成员属性:*str,length
*成员方法:
1.显示构造器:String(char *s,int len)
2.析构器:~String()
3.获取此时的string:char *getStr()
4.获取此时的length:int getLength()
5.字符串的复制:char *Strcpy(char *s)
6.字符串的连接:char *Strcat(char *s)
7.字符串的比较:int Compare(char *b).
8.求子串:char *substring(int sub_start,int sub_end)
9.字符串的交换:void exchange(char *s)
10.查找字符串(BF):int BF_Find_String(char *s)
11.求出现某字符在指定字符串中第一次出现的位置:int indexOf(char index)
12.字符串小写转大写:void toUpperCase().
13.字符串大写转小写:void toLowerCase().
14.消除字符串中的空格:char *trim().
15.消除{,!""#$%&'()*+,-./}的字符:char *SplitStr().
16.在指定字符串的指定位置添加某字符: void set(int index,char letter).
*/
class String
{
//成员变量
private:
char *str;
int length;
//构造器
public:
String(char *s,int len)
{
str=new char[strlen(s)+1];
strcpy(str,s);
length=len;
}
//析构器
~String()
{
delete[] str;
}
/*
*获取此时的string
*/
char *getStr(){
return str;
}
/*
*获取此时的length
*/
int getLength(){
return length;
}
/*
*字符串的复制
*/
char *Strcpy(char *s){
char *destinaton=new char[strlen(s)+1];//为destinaton开辟内存空间
strcpy(destinaton,s); //将s复制给destinaton
if(destinaton!=NULL){ //如果destinaton不为空,说明复制完成,且成功
cout<<"复制完成"<0){ //com>0得出str>b
cout<>i;
while(j=b){
cout<<"匹配成功,查找成功\n";
return 1;
}
else{
cout<<"匹配失败,查找失败\n";
return -1;
}
}
/*
*求出现某字符在指定字符串中第一次出现的位置
*/
int indexOf(char index)
{
for(int i = 0;i < strlen(str);i++){
if(str[i] == index){
return i+1;
}
}
return 0;
}
/*
*字符串小写转大写
*/
void toUpperCase()
{
for(int i = 0; str[i]!='\0';i++){
if( str[i]>='a' && str[i]<='z'){
str[i] = str[i]-32;
}
}
}
/*
*字符串大写转小写
*/
void toLowerCase()
{
for(int i =0;str[i]!='\0';i++){
if(str[i]>='A' && str[i]<='Z'){
str[i] = str[i]+32;
}
}
}
/*
*消除字符串中的空格
*/
char *trim()
{
int j = 0;
int count = 0;
char *s = new char[strlen(str)+1];
for(int i = 0;i= 33 && (int)str[i] <= 47){
i++;
}else{
s[j++] = str[i];
i++;
}
}
s[j] = '\0';
return s;
}
/*
*将字符添加到字符串指定位置
*/
void set(int index,char letter)
{
int i = 0;
int j = strlen(str);
// char *s = str;
//str = (char*)realloc(s,100);
for(i = strlen(str)-1 ; i > index ; i--){
str[i+1] = str[i];
}
str[i+1] = str[i];
str[i] = letter;
str[j+1] = '\0';
length++;
}
/*
*字符串翻转
*/
char *reverse_str()
{
char temp;
char *temp_s = new char[strlen(str)+1];
strcpy(temp_s,str); //拷贝str到temp_s中
int i,j;
for(i=0; ;i++)
{
if(*(temp_s+i)=='\0')
break;
} //求字符串长度
i--;
for(j=0;j<=i;i--,j++)
{
temp=*(temp_s+j);
*(temp_s+j)=*(temp_s+i);
*(temp_s+i)=temp;
}
return temp_s; //字符串翻转
}
};
/*
*以下是文件写入操作
1.字符串复制结果写入文件:void write_copy(char s1[30])
2.字符串连接结果写入文件:void write_connect(char s1[30])
3.字符串比较(compare)结果写入文件:void write_compare(char s1[15],char s2[15],int flag)
4.将所求子串写入文件:void write_substring(char s1[15],char s2[15],int sub_start,int sub_end)
5.字符串交换前后数据写入文件:void write_exchange(char s1[15],char s2[15],int flag)
6.字符串的查找结果写入文件:void write_BF_Find_String(char str[15],char s[15],int find_string_value)
7.将某字符在字符串第一次出现的位置写入文件:void write_indexOf(char str[15],char index,int pos)
8.将转换大小写结果写入文件:void write_LowerAndUpperCase(char s1[15],char s2[15])
9.消除字符串中的空格后结果写入文件: void write_trim(char s1[15],char s2[15])
10.消除常用标点符号,!""#$%&'()*+,-./的结果写入文件:void write_SplitStr(char s1[15],char s2[15])
11.将某字符添加到某字符串的某个位置的结果写入文件:void write_set(char s1[15],char s2[15],int index,char one_letter)
12.将字符串翻转后写入文件: void write_reverse_str(char s1[15],char s2[15])
13.起始写入文件的字符串:void write_initvalue(int n)
14.读取文件指定位置的字符串:char * read(int count)
*/
/*
*copy结果写入文件
*/
void write_copy(char s1[30])
{
ofstream out;//向文件写入数据
//out:以写的方式打开
//ate:打开文件后立即定位到文件末尾
//app:每次写操作前均定位到文件末尾
out.open("d:\\j33.txt",ios::out|ios::ate|ios::app);
if(!out){
cout<<"文件打开失败!"<>MAX;
cout<<"\n请输入字符串: \n";
write_initvalue(MAX);
decorate();
cout<<"\n";
cout<<"1————字符串复制\n\n";
cout<<"2————字符串连接\n\n";
cout<<"3————字符串比较\n\n";
cout<<"4————字符串求子串\n\n";
cout<<"5————字符串交换\n\n";
cout<<"6————查找指定的字符串\n\n";
cout<<"7————查找某字符在字符串第一次出现的位置\n\n";
cout<<"8————将字符串所有字符都转换为大写\n\n";
cout<<"9————将字符串所有字符都转换为小写\n\n";
cout<<"10———消除字符串中的空格\n\n";
cout<<"11———消除字符串中常用标点符号\n\n";
cout<<"12———将字符添加到字符串的指定位置\n\n";
cout<<"13———字符串翻转\n\n";
cout<<"0————退出\n\n";
cout<<"请输入一个整型m,选择你此时将使用第几行字符串: ";
while(cin>>m){
if(m<=0||m>MAX){
cout<<"\n输入的m不在指定范围内,请重新输入:";
continue;
}
break;
}
String str_ing(read(m),12); //创建str_ing对象
char *temp = new char[strlen(str_ing.getStr())+1];//用于交换的临时字符指针
cout<<"此时的string为 : "<>k){
switch(k){
case 1:
cout<<"此时你的操作字符串为"<>m;
strback = str_ing.Strcpy(read(m));
write_copy(strback);
cout<<"\n复制完成后的string :";
cout<>m;
strback = str_ing.Strcat(read(m));
write_connect(strback);
cout<<"\n连接后的字符串:"<>m;
compare_string_value = str_ing.Compare(read(m));
write_compare(str_ing.getStr(),read(m),compare_string_value);
decorate();
break;
case 4:
int sub_start,sub_end;
cout<<"此时你的操作字符串为"<>sub_start>>sub_end;
cout<<"所求子串为: ";
strback = str_ing.substring(sub_start,sub_end);
write_substring(strback,str_ing.getStr(),sub_start,sub_end);
cout<>m;
strcpy(temp,str_ing.getStr());
write_exchange(str_ing.getStr(),read(m),0);
str_ing.exchange(read(m)) ;
write_exchange(str_ing.getStr(),temp,1);
decorate();
break;
case 6:
cout<<"此时你的操作字符串为"<>letter;
find_string_value = str_ing.BF_Find_String(letter);
write_BF_Find_String(str_ing.getStr(),letter,find_string_value);
decorate();
break;
case 7:
cout<<"此时你的操作字符串为"<>index;
pos = str_ing.indexOf(index);
if(pos){
cout<>index>>one_letter;
while(1){
if(index >= 0 && index < strlen(str_ing.getStr())){
break;
}
cout<<"输入范围有误,请重新输入(0-"<>index>>one_letter;
}
str_ing.set(index,one_letter);
cout<
工程下载—github
工程下载—CSDN下载