string类总结

目录

string 对象的定义和初始化

string 对象的操作

string::size_type 类型

插入(insert)

替换(replace)

添加(append)

删除(erase)

剪切(substr)

比较(compare)

交换(swap)

反转(reverse)

迭代器(iterator)

查找(find)


string 类型支持长度可变的字符串,C++ 标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作。标准库 string 类型的目的就是满足对字符串的一般应用。与其他的标准库类型一样,用户程序要使用 string 类型对象,必须包含相关头文件。

string 对象的定义和初始化

string 标准库支持几个构造函数。构造函数是一个特殊成员函数,定义如何初始化该类型的对象。下面列出了几个 string 类型常用的构造函数。当没有明确指定对象初始化式时,系统将使用默认构造函数。

string 对象的操作

string::size_type 类型

事实上,size 操作返回的是 string::size_type 类型的值。
string 类类型和许多其他库类型都定义了一些配套类型。通过这些配套类型,库类型的使用就能与机器无关。size_type 就是这些配套类型中的一种。它定义为与 unsigned 型(unsigned int 或 unsigned long)具有相同的含义,而且可以保证足够大能够存储任意 string 对象的长度。为了使用由 string 类型定义的 size_type 类型是由 string 类定义。
任何存储 string 的 size 操作结果的变量必须为 string::size_type 类型。特别重要的是,还要把 size 的返回值赋给一个 int 变量。
虽然我们不知道 string::size_type 的确切类型,但可以知道它是 unsigned 型。对于任意一种给定的数据类型,它的 unsigned 型所能表示的最大正数值比对应的 signed 型要大。这个事实表明 size_type 存储的 string 长度是 int 所能存储的两倍。
使用 int 变量的另一个问题是,有些机器上 int 变量的表示范围太小,甚至无法存储实际并不长的 string 对象。如在有 16 位 int 型的机器上,int 类型变量最大只能表示 32767 个字符的 string 个字符的 string 对象。而能容纳一个文件内容的 string 对象轻易就会超过这个数字。因此,为了避免溢出,保存一个 stirng 对象 size 的最安全的方法就是使用标准库类型 string::size_type。

插入(insert)

string str = "hello world";
string str2 = "hard ";
string str3 = "it is so happy wow";

//s.insert(pos,n,ch)        在字符串s的pos位置上面插入n个字符ch
str.insert(6,4,'z');        // str = "hello zzzzworld"

//s.insert(pos,str)         在字符串s的pos位置插入字符串str
str.insert(6,str2);         // str = "hello hard world"

//s.insert(pos,str,a,n)     在字符串s的pos位置插入字符串str中位置a到后面的n个字符
str.insert(6,str3,6,9);     // str = "hello so happy world"

//s.insert(pos,cstr,n)      在字符串s的pos位置插入字符数组cstr从开始到后面的n个字符
//此处不可将"it is so happy wow"替换为str3
str.insert(6,"it is so happy wow",6);       // str = "hello it is world"

替换(replace)

string str = "hello world";
string str2 = "hard ";
string str3 = "it is so happy wow";

//s.replace(p0,n0,n,ch)           删除p0开始的n0个字符,然后在p0处插入n个字符ch
str.replace(0,6,4,'z');           // str = "zzzzworld"

//s.replace(p0,n0,str)            删除从p0开始的n0个字符,然后在p0处插入字符串str
str.replace(0,6,str2);            // str = "hard world"

//s.replace(p0,n0,str,pos,n)      删除p0开始的n0个字符,然后在p0处插入字符串str中从pos开始的n个字符
str.replace(0,6,str3,6,9);        // str = "so happy world"

//s.replace(p0,n0,cstr,n)         删除p0开始的n0个字符,然后在p0处插入字符数组cstr的前n个字符
//此处不可将"it is so happy wow"替换为str3
str.replace(0,6,"it is so happy wow",6);        // str = "it is world"

添加(append)

//append函数用在字符串的末尾添加字符和字符串。(同样与插入、替换对应理解)

string str = "hello world";
string str2 = "hard ";
string str3 = "it is so happy wow";

//s.append(n,ch)           在当前字符串结尾添加n个字符c
str.append(4,'z');         // str = "hello worldzzzz"

//s.append(str)            把字符串str连接到当前字符串的结尾
str.append(str2);          // str = "hello worldhard "

//s.append(str,pos,n)      把字符串str中从pos开始的n个字符连接到当前字符串的结尾
str.append(str3,6,9);      // str = "hello worldso happy "

//append(cstr,int n)       把字符数组cstr的前n个字符连接到当前字符串结尾
//此处不可将"it is so happy wow"替换为str3
str.append("it is so happy wow",6);      // str = "hello worldit is "

删除(erase)

string str = "welcome to my blog";

//s.erase(pos,n)           把字符串s从pos开始的n个字符删除
str.erase(11,3);           // str = "welcome to blog"

剪切(substr)

string str = "The apple thinks apple is delicious";

//s.substr(pos,n)                      得到字符串s位置为pos后面的n个字符组成的串
string s1 = str.substr(4,5);           // s1 = "apple"

//s.substr(pos)                        得到字符串s从pos到结尾的串
string s2 = str.substr(17);            // s2 = "apple is delicious"

比较(compare)

string str1 = "small leaf";
string str2 = "big leaf";

//s.compare(str)                     比较当前字符串s和str的大小
cout << str1.compare(str2);                   // 1

//s.compare(pos,n,str)               比较当前字符串s从pos开始的n个字符与str的大小
cout << str1.compare(2,7,str2);               // -1

//s.compare(pos,n0,str,pos2,n)       比较当前字符串s从pos开始的n0个字符与str中pos2开始的n个字符组成的字符串的大小
cout << str1.compare(6,4,str2,4,4);           // 0

//s.compare(pos,n0,cstr,n)           比较当前字符串s从pos开始的n0个字符与字符数组cstr中前n个字符的大小
//此处不可将"big leaf"替换为str2
cout << str1.compare(6,4,"big leaf",4);       // 1

交换(swap)

string str1 = "small leaf";
string str2 = "big leaf";

//或者str1.swap(str2)  ,输出结果相同
swap(str1,str2);        // str1 = "big leaf"     str2 = "small leaf"
swap(str1[0],str1[1]);  // str1 = "ibg leaf"

反转(reverse)

string str = "abcdefghijklmn";
reverse(str.begin(),str.end());      

迭代器(iterator)

string str = "abcdefghijklmn";

//s.begin()      返回字符串s第一个字符的位置
char a = *(str.begin());           // a

//s.end()        返回字符串s最后一个字符串的后一个位置
char b = *(str.end()-1);           // n

//s.rbegin()     返回字符串s最后一个字符的位置
char c = *(str.rbegin());          // n

//s.rend()       返回字符串s第一个字符的前一个位置
char d = *(str.rend()-1);          // a

查找(find)

string str = "The apple thinks apple is delicious";     //长度34
string key = "apple";

//s.find(str)            查找字符串str在当前字符串s中第一次出现的位置
int pos1 = str.find(key);                  // 4

//s.find(str,pos)        查找字符串str在当前字符串s的[pos,end]中第一次出现的位置
int pos2 = str.find(key, 10);              // 17

//s.find(cstr,pos,n)     查找字符数组cstr前n的字符在当前字符串s的[pos,end]中第一次出现的位置
//此处不可将"delete"替换为str2(如果定义str2 = "delete")
int pos3 = str.find("delete", 0, 2);       // 26

//s.find(ch,pos)         查找字符ch在当前字符串s的[pos,end]中第一次出现的位置
int pos4 = str.find('s', 0);               // 15

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: string类是标准C++中的一个字符串类,它提供了许多常用方法,包括: 1. length():返回字符串的长度。 2. size():同length(),返回字符串的长度。 3. empty():判断字符串是否为空字符串。 4. clear():清空字符串。 5. resize():改变字符串的大小。 6. substr():返回字符串的子串。 7. find():查找子串在字符串中第一次出现的位置。 8. rfind():查找子串在字符串中最后一次出现的位置。 9. replace():替换字符串中的子串。 10. c_str():返回字符串的C风格字符串表示。 11. compare():比较两个字符串的大小。 这些方法都是很常用的,可以方便地操作字符串。 ### 回答2: string类是Java中常用的一个类,用于表示字符串。它包含了很多常用的方法,下面我将介绍几个常用的方法: 1. length()方法:用于返回字符串的长度。例如,对于字符串"Hello World",使用length()方法将返回11。 2. charAt()方法:用于返回指定位置上的字符。字符串中的每个字符都有一个对应的索引值,第一个字符的索引值为0。例如,对于字符串"Hello World",使用charAt(1)方法将返回'e'。 3. substring()方法:用于返回从指定位置开始到指定位置结束的子字符串。例如,对于字符串"Hello World",使用substring(6, 11)方法将返回"World"。 4. indexOf()方法:用于返回指定字符或子字符串在原字符串中第一次出现的位置。例如,对于字符串"Hello World",使用indexOf("o")方法将返回4。 5. toUpperCase()方法和toLowerCase()方法:分别用于将字符串中的字符转换为大写和小写。例如,对于字符串"Hello World",使用toUpperCase()方法将返回"HELLO WORLD",使用toLowerCase()方法将返回"hello world"。 这些只是string类中的一小部分常用方法,还有很多其他的方法可以操作字符串。通过这些方法,我们可以对字符串进行长度判断、字符提取、子字符串截取、字符查找等各种操作,从而满足不同的需求。 ### 回答3: string类是Java中用于表示字符串的一个类。它提供了许多常用的方法,方便我们对字符串进行操作。 首先是字符串的创建和获取长度。我们可以使用构造函数创建一个字符串对象,也可以使用双引号直接创建字符串常量。使用.length()方法可以获取字符串的长度。 接下来是字符串的拼接和切割。字符串拼接可以使用+运算符或.concat()方法进行,两个方法都可以将两个字符串连接起来。字符串切割可以使用.split()方法,该方法接收一个正则表达式作为参数,将字符串分割成多个子字符串。 然后是字符串的查找和替换。使用.indexOf()方法可以查找指定字符或字符串在原字符串中的位置,如果找到则返回其索引,否则返回-1。使用.replace()方法可以将一个字符串替换成另一个字符串。 还有字符串的大小写转换。使用.toUpperCase()方法可以将字符串转换成大写形式,使用.toLowerCase()方法可以将字符串转换成小写形式。 其次是字符串的截取和比较。使用.substring()方法可以截取字符串的一部分,指定起始索引和结束索引。使用.equals()方法可以比较两个字符串是否相等,区分大小写。使用.equalsIgnoreCase()方法可以比较两个字符串是否相等,不区分大小写。 最后是字符串的去除空格和判断开头或结尾。使用.trim()方法可以去除字符串前后的空格。使用.startsWith()方法可以判断字符串是否以指定字符或字符串开头,使用.endsWith()方法可以判断字符串是否以指定字符或字符串结尾。 总结来说,string类的常用方法包括创建和获取字符串、拼接和切割字符串、查找和替换字符串、大小写转换、截取和比较字符串、去除空格和判断开头或结尾等。这些方法可以方便地对字符串进行各种操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值