C++STL2 string

string的基本操作

声明 string str;赋值str="ABC"
各种用法戳此文
也可以戳此文

我认为重要的:

1.构造函数中:string str(n,‘A’)——存储 n 个 ‘A’ 到 str 中
复制 string str(str1)
2.成员函数中:str.assign(“ABC”)——清空字符串,并设置为 “ABC”, 注意assign就相当于清空原来重新设置

3.str.size()——和 length() 一样

4.str.swap(str1)——交换 str1 和 str 的字符串

5.str.append(“ABC”)——在str末尾添加一个字符串 “ABC”,参数必须是字符串形式

6.str.insert(2,3,‘A’)——在str下标为2的位置添加 3个 字符’A’
str.insert(2,“ABC”)——在str下标为2的位置添加 字符串 “ABC”

7.str.erase(2)——删除 下标2 的位置开始,之后的全删除
str.erase(2,1)——删除 下标2 的位置开始,之后的 1个 删除
str.clear()——删除 str 所有
str.replace(2,4,“abcd”)——从 下标2 的位置,替换 4个字节 ,为"abcd" str.empty()——判空

8.str.find(“ABC”)——查找 “ABC” str.find(‘B’,1)——从 位置1 处,查找’B’

9.str1=str.substr(2)——提取子串,提取出 str 的 下标为2 到末尾,给 str1
str1=str.substr(2,3)——提取子串,提取出 str 的 下标为2 开始,提取三个字节,给 str1

10.compare函数:完全相等返回0;完全不等返回小于0;部分相等返回大于0,str.compare(“abcd”)——完全相等,返回0

#include<iostream>
using namespace std;
 
int main() {
	string s1;   //空字符串
	string s2(10,'$');  //十个 $
	string s3("hello world");  //hello word
 
	cout << s3.size() << endl;
	cout << s3.length() << endl; //求字符串长度  11 size和length一样
 
	s3.clear();  //清空
	string s4(s3); //s4 和 s3一样
}

insert方法的示例代码如下:

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string strDemo = "I am";
 
    strDemo.insert(4, " good.");//插在第4位后面
 
    cout << "strDemo is: " << strDemo << endl;
 
    return 0;
}
 

string的遍历

1.直接下标 与char数组一样
2.迭代器,类似于指针

    string::iterator it = str.begin();   //1234
    while (it != str.end())
    {
			...
    }

3.for循环

使用范围for语句处理每个字符,C++11新式for循环(底层实现是迭代器;auto自动推到类型,C++11支持)(转)

for (declaration : expression)
	statement

其中, expression部分是一个对象,用于表示一个序列。declaration部分负责定义一个变量,该变量将被用于访问序列中的基础元素。每次迭代,declaration部分的变量会被初始化为expression部分的下一个元素值。

通过使用范围for语句可以遍历string对象中的每个字符。

string str("some string");
for (auto c : str) {
	cout << c << endl;
}

还可以通过引用改变字符串中的字符:

string str("some string");
for (auto &c : str) {
	c = toupper(c);
}

cout << str << endl;

除了使用引用的方法外还可以通过下标来处理字符:

for (decltype(str.size()) index = 0; index != str.size(); ++index) {
	str[index] = toupper(str[index]);				// 将当前字符改写为大写形式
}
发布了46 篇原创文章 · 获赞 13 · 访问量 3676

猜你喜欢

转载自blog.csdn.net/qq_39679772/article/details/105344103
今日推荐