串的基础操作

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #008000 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; color: #008000 }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #0433ff }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 }
p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #008f00 }
span.s1 { }
span.s2 { font: 18.0px Menlo }
span.s3 { color: #000000 }
span.s4 { color: #0433ff }
span.s5 { font: 18.0px "PingFang SC" }

参考书籍:严蔚敏版数据结构 数据结构高分阅读等
 1 #include <iostream>
 2
 3 using namespace std;
 4
 5 #define  maxSize 1000
 6 #define WWStr(str) #str
 7 #define WWLine "-------------"
 8
 9 //参考书籍:严蔚敏版数据结构 数据结构高分阅读等
10 /**
11  定长顺序存储表示的串
12  */
13 typedef struct{
14     char str[maxSize+1];
15                 //maxSize为串的最大长度 后边的加1为了存放‘\0’结束标记的
16     int length;
17 }FixedOrderedString;
18
19 /**
20  动态分配存储表示的串
21  */
22 typedef struct {
23     char *ch;   //指向动态分配存储区首地址的字符指针
24     int length; //串的长度
25
26 }UnfixedString;
27
28 /**
29  串的相关操作
30  */
31 void stringOperation();
32
33 /**
34  用ch给非固定的字符串str赋值
35
36  @param str 源串
37  @param ch 目的串
38  @return 1 赋值成功 0 赋值失败
39  */
40 int assignUnfixedStrWithChar(UnfixedString &str,const char *ch);
41 /**
42  返回不定长的串的长度
43
44  @param unfixedStr 不定长的串
45  @return unfixedStr的长度
46  */
47 int lengthOfUnfixedStr(UnfixedString unfixedStr);
48
49 /**
50  比较字符串str1 和str2 返回两个字符串相差的长度 (如果是长度相同返回的第一个不同的字母的差值  长度不同的情况而且前边的字母都相同 返回的是长度的差值)
51
52  @param str1 不定长字符串str1
53  @param str2 不定长字符串str2
54  @return 返回两个字符串相差的长度
55  */
56 int compareTwoUnfixedStr(UnfixedString str1,UnfixedString str2);
57
58
59 int main(int argc, const char * argv[]) {
60     stringOperation();
61     return 0;
62 }
63
64 #pragma mark - 串的相关操作
65 void stringOperation(){
66     UnfixedString *unfixedStr;
67     unfixedStr = new UnfixedString;
68 //    unfixedStr->ch = NULL;
69 //    unfixedStr ->length = 0;
70     unfixedStr->ch = "abc";
71     unfixedStr->length = 3;
72     int currentLen = lengthOfUnfixedStr(*unfixedStr);
73     cout<<WWStr(当前串的长度:)<<currentLen<<endl;
74 //    assignUnfixedStrWithChar(*unfixedStr, NULL);
75     assignUnfixedStrWithChar(*unfixedStr, "iOSiOS");
76     if(unfixedStr->length == 0){
77         cout<<WWStr(赋值后)<<WWStr(当前字符串为空)<<endl;
78     }else{
79         cout<<WWStr(赋值后)<<unfixedStr->ch<<endl;
80     }
81 //    currentLen = lengthOfUnfixedStr(*unfixedStr);
82     cout<<WWStr(当前串的长度:)<<currentLen<<endl;
83     UnfixedString *unfixedStr2 = new UnfixedString();
84     unfixedStr2->ch = "abcd";
85     cout<<lengthOfUnfixedStr(*unfixedStr2)<<endl;
86
87     int lenCom = compareTwoUnfixedStr(*unfixedStr, *unfixedStr2);
88     cout<<lenCom;
89
90 }

串赋值的相关操作:

串赋值(源串给目的串赋值)考虑4种情况:

1.赋值前:源串为空且目的串为空 赋值后:目的串为空

赋值过程:把目的设置为空 长度设置为0

2.赋值前:源串为空  目的串不为空

赋值过程:释放目的串空间  把目的串设置为空 长度设置为0

赋值后:目的串为空

3.赋值前:源串不为空 赋值前目的串为空

赋值过程:释放目的串空间 计算源串的长度 根据源串改变目的串的长度和值

 赋值后:目的串和源串长度相同 目的串

4.赋值前:源串和目的串均不为空

赋值过程:释放目的串 计算源串长度 用源串依次给目的串赋值并且改变长度

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #008000 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; color: #008000 }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #008000; min-height: 21.0px }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 }
p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000; min-height: 21.0px }
p.p6 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #008f00 }
p.p7 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; color: #008f00 }
span.s1 { }
span.s2 { font: 18.0px Menlo }
span.s3 { color: #008f00 }
span.s4 { font: 18.0px "PingFang SC" }
span.s5 { color: #0433ff }
span.s6 { color: #3495af }
span.s7 { color: #000000 }
span.s8 { font: 18.0px Menlo; color: #000000 }
span.s9 { font: 18.0px "PingFang SC"; color: #008f00 }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #008000 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; color: #008000 }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #008000; min-height: 21.0px }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 }
p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000; min-height: 21.0px }
p.p6 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #008f00 }
p.p7 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; color: #008f00 }
span.s1 { }
span.s2 { font: 18.0px Menlo }
span.s3 { color: #008f00 }
span.s4 { font: 18.0px "PingFang SC" }
span.s5 { color: #0433ff }
span.s6 { color: #3495af }
span.s7 { color: #000000 }
span.s8 { font: 18.0px Menlo; color: #000000 }
span.s9 { font: 18.0px "PingFang SC"; color: #008f00 }

 1 /**
 2  用ch给非固定的字符串str赋值
 3
 4  @param str 源串
 5  @param ch 目的串
 6  @return 1 赋值成功 0 赋值失败
 7  */
 8 int assignUnfixedStrWithChar(UnfixedString &str,const char *ch){
 9
10     cout<<WWLine<<WWStr(赋值串的操作)<<WWLine<<endl;
11     if (str.ch) {
12         delete &str;
13 //        delete str.ch;
14     }
15     int len = 0;
16     const char *c = ch;
17     if (c == NULL) {
18         cout<<WWStr(用空串给目的串);
19         if (str.ch) {
20             cout<<str.ch;
21         }else{
22             cout<<WWStr(空串);
23         }
24         cout<<WWStr(赋值)<<endl;
25         str.ch = NULL;
26         str.length = 0;
27         return 1;
28     }
29
30     while (*c) {
31         //计算源串的长度
32         ++ len;
33         ++ c;
34     }
35
36     if (len == 0) {
37         //源串长度为0的情况下 设置目的串的值和长度
38         str.ch = NULL;
39         str.length = 0;
40         return 1;
41     }else{
42         //有的时候c的值可能并不等于ch的值。。。。。
43 //        cout<<WWLine<<WWStr(用源串)<<c;
44         cout<<WWLine<<WWStr(用源串)<<ch;
45         if (str.ch == NULL) {
46             cout<<WWStr(给目的串空串)<<WWStr(赋值)<<endl;
47         }else{
48             cout<<WWStr(给目的串)<<str.ch<<WWStr(赋值)<<endl;
49         }
50         //取len + 1 是为了多分配一个空间 存放‘\0‘字符
51 //        str.ch = (char *)malloc(sizeof(char) * (len + 1));
52         str.ch = new char[len+1];
53         if(str.ch == NULL){
54             //分配空间失败
55             return 0;
56         }else{
57             c = ch;
58             //循环条件使用"<="的原因是把ch最后的’\0‘复制到新串中作为结束标记
59             for (int i = 0; i<= len; ++i,++c)
60                 str.ch[i] = *c;
61             str.length = len;
62             return 1;
63         }
64     }
65 }

测试结果有:

1.

unfixedStr->ch = NULL;
unfixedStr->length = 0;
assignUnfixedStrWithChar(*unfixedStr, NULL);

-------------赋值串的操作-------------

用空串给目的串空串赋值

赋值后当前字符串为空

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000 }
span.s1 { }

Program ended with exit code: 0

2.

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 }
span.s1 { }
span.s2 { color: #3495af }
span.s3 { color: #b4261a }

unfixedStr->ch = "abc";
unfixedStr->length = 3;
assignUnfixedStrWithChar(*unfixedStr, NULL);

-------------赋值串的操作-------------

用空串给目的串abc赋值

赋值后当前字符串为空

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000 }
span.s1 { }

Program ended with exit code: 0

3.

 unfixedStr->ch = NULL;
 unfixedStr ->length = 0;
assignUnfixedStrWithChar(*unfixedStr, "iOSiOS");

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000 }
span.s1 { }
span.s2 { font: 11.0px "PingFang SC" }

-------------赋值串的操作-------------

-------------用源串iOSiOS给目的串空串赋值

赋值后iOSiOS

Program ended with exit code: 0

4.

 unfixedStr->ch = "abc";
 unfixedStr->length = 3;
assignUnfixedStrWithChar(*unfixedStr, "iOSiOS");

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000 }
span.s1 { }
span.s2 { font: 11.0px "PingFang SC" }

-------------赋值串的操作-------------

-------------用源串iOSiOS给目的串abc赋值

赋值后iOSiOS

计算串的长度

#pragma mark - 返回不定长的串的长度
int lengthOfUnfixedStr(UnfixedString unfixedStr){
    return unfixedStr.length;
}

有时候我还想写上更多。。。

像下边这样:

未完待续。。。

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; color: #008f00 }
span.s1 { font: 18.0px Menlo }
span.s2 { }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px "PingFang SC Semibold"; color: #000000 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000 }
span.s1 { font: 11.0px "PingFang SC" }
span.s2 { font: 11.0px Menlo }
span.s3 { }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px "PingFang SC Semibold"; color: #000000 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000 }
span.s1 { font: 11.0px "PingFang SC" }
span.s2 { font: 11.0px Menlo }
span.s3 { }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #0433ff }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000; min-height: 21.0px }
span.s1 { }
span.s2 { font: 18.0px "PingFang SC" }
span.s3 { color: #0433ff }
span.s4 { color: #3495af }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #3495af }
span.s1 { }
span.s2 { color: #000000 }
span.s3 { color: #0433ff }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 }
span.s1 { }
span.s2 { color: #3495af }
span.s3 { color: #b4261a }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #3495af }
span.s1 { }
span.s2 { color: #000000 }
span.s3 { color: #0433ff }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #3495af }
span.s1 { }
span.s2 { color: #000000 }
span.s3 { color: #b4261a }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 }
span.s1 { }
span.s2 { color: #3495af }
span.s3 { color: #0433ff }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #3495af }
span.s1 { }
span.s2 { color: #000000 }
span.s3 { color: #b4261a }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 }
span.s1 { }
span.s2 { color: #3495af }
span.s3 { color: #b4261a }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #008000 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; color: #008000 }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #0433ff }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #008f00 }
p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 }
p.p6 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000; min-height: 21.0px }
span.s1 { }
span.s2 { font: 18.0px Menlo }
span.s3 { color: #000000 }
span.s4 { color: #0433ff }
span.s5 { font: 18.0px "PingFang SC" }
span.s6 { color: #008f00 }
span.s7 { font: 18.0px "PingFang SC"; color: #008f00 }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #008000 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; color: #008000 }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 }
span.s1 { }
span.s2 { font: 18.0px Menlo }
span.s3 { color: #0433ff }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #008000 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; color: #008000 }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #008000; min-height: 21.0px }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 }
span.s1 { }
span.s2 { font: 18.0px Menlo }
span.s3 { color: #008f00 }
span.s4 { font: 18.0px "PingFang SC" }
span.s5 { color: #0433ff }
span.s6 { color: #3495af }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #008000 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; color: #008000 }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #008000; min-height: 21.0px }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 }
span.s1 { }
span.s2 { font: 18.0px Menlo }
span.s3 { color: #008f00 }
span.s4 { font: 18.0px "PingFang SC" }
span.s5 { color: #0433ff }
span.s6 { color: #3495af }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #008000 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; color: #008000 }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #008000; min-height: 21.0px }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 }
span.s1 { }
span.s2 { font: 18.0px Menlo }
span.s3 { color: #008f00 }
span.s4 { font: 18.0px "PingFang SC" }
span.s5 { font: 18.0px Menlo; color: #008f00 }
span.s6 { color: #0433ff }
span.s7 { color: #3495af }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #3495af }
span.s1 { color: #0433ff }
span.s2 { }
span.s3 { color: #000000 }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #0433ff }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #008f00 }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #3495af }
span.s1 { }
span.s2 { font: 18.0px "PingFang SC" }
span.s3 { color: #0433ff }
span.s4 { color: #3495af }
span.s5 { color: #000000 }
span.s6 { color: #b4261a }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000; min-height: 21.0px }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000 }
span.s1 { }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #b4261a }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000; min-height: 21.0px }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #0433ff }
span.s1 { color: #0433ff }
span.s2 { }
span.s3 { color: #000000 }
span.s4 { color: #3495af }
span.s5 { color: #b4261a }

时间: 2024-10-01 00:31:45

串的基础操作的相关文章

MYSQL 基础操作

1.MySQL基础操作 一:MySQL基础操作 1:MySQL表复制 复制表结构 + 复制表数据 create table t3 like t1; --创建一个和t1一样的表,用like(表结构也一样) insert into t3 select * from t1; --t1的数据全部拿过来,注意是表结构一致才select* ,否则选择相应的的字段列插入 create table t1( id int unsigned not null auto_increment primary key,

vsphere基础操作-网络

一.vsphere网络操作 概念: portgroup:通信端口组.在vsphere中,一共包含三种端口组. 1)管理网络:management network,可以理解为EXSI主机的管理IP地址.每个EXSI必须配置一个管理网络IP,使得vc能够管理到exsi.每个EXSI只能有一个唯一的管理网络. 2)内核:vmkernel,可以理解为EXSI的后端IP,使得后端各项功能能够实现.这里所说的后端功能指的是EXSI之间的通讯以实现VMOTION等高级功能.连入ISCSI或NAS等存储.FT功

Mysql安装和基础操作

1.环境检查: 先检查是否已经安装了:rpm -qa |grep mysql ---两个都检查下,查看mysql是否安装 rpm -qa |grep MySQL若安装有可删除:rpm -e ****** 2.安装:1)安装前准备:mkdir usr/mysql cd进入该目录,上传安装包到/usr/mysql目录下2)安装:rpm -ivh MySQL-server-5.0.16-0.i386.rpm rpm -ivh MySQL-elient-5.0.16-0.i386.rpm3)验证安装是否

双向链表的基础操作(C++实现)

★C++实现双向链表的基础操作(类的实现) #include<iostream> #include<cassert> using namespace std; typedef int DataType; class double_link_list {                        //定义双向链表类,包括了双向的前驱和后继指针,以及对象的初始化 public: friend class ListNode; double_link_list(DataType x =

数据结构-线性表的一些基础操作 c++代码

//线性表的顺序存储结构 template <class T> class Linearlist { public: Linearlist(int MaxListSize == 10); ~Linearlist() { delete []element; } bool IsEmpty() const { return length == 0; } bool IsFull() const { return length == MaxSize; } int Length() const { ret

php之文件基础操作

在php中对文件的基础操作非常的简单,php提供的函数粗略的用了一遍. file_get_contents():可以获取文件的内容获取一个网络资源的内容,这是php给我封装的一个比较快捷的读取文件的内容.网络资源的函数,此函数里面封装了对文件的打开,读取,关闭操作.一次性的将内容全部读取到内存中,相当方便,但是对于大文件或者网络资源较大的时候,不建议使用.file_put_contents():写入数据,和file_get_contents()类似. 文件的基础操作:touch()--新建,fo

环境变量,属性文件,文件基础操作,目录基础操作,遍历指定后缀名文件

环境变量和属性 环境变量相关: 1.得到某个/所有环境变量的值 2.设置环境变量的值 3.列出全部系统属性名 import java.util.Enumeration; import java.util.Map; import java.util.Map.Entry; import java.util.Properties; public class Environment { public static void main(String[] args) { // TODO Auto-gener

SQLSERVER 数据库基础操作

1.修改表中字段的长度,类型为varchar,从30改到50 语句执行(注:当前为30): alter table 表名 alter column 列名 varchar(50) 2.增加字段: alter table 表名 add 字段 varchar(50) SQLSERVER 数据库基础操作,布布扣,bubuko.com

mysql的基础操作指令整理|环境redhat6

1.安装 yum-y install mysql mysql-server service mysqld start|stop|restart        ##启动|停止|重启 chkconfig mysqld on|off                  ##开机启动|关闭 此时输入:mysql就能启动进入(记得是start状态) 2.改密 mysqladmin –uroot password             ##创建密码 mysqladmin–uroot –pxxoo passw