c++中string容器的常用方法总结,加深学习巩固


因为以前学过c语言,最近在学c++,做一下笔记,以便下次查看。

1.string的本质

string是C++风格的字符串,而string本质上是一个类,在使用string语句的时候一般需要导入string的头文件。不过我一般使用下方的万能头文件。

#include<bits/stdc++.h>

2.string的常用方法

1.赋值操作

通过assign进行赋值操作。

//直接进行赋值
string str1;
str1 = "hello world";
cout << "str1 = " << str1 << endl;

//通过assigin进行赋值
string str4;
str4.assign("hello c++");
cout << "str4 = " << str4 << endl;

//通过assign方法赋值字符串的前五个字符
string str5;
str5.assign("hello c++",5);
cout << "str5 = " << str5 << endl;

//通过assign方法赋值五个x
string str7;
str7.assign(5, 'x');
cout << "str7 = " << str7 << endl;

2.字符串拼接

通过append方法进行字符串拼接

//直接拼接
string str1 = "我";
str1 += "爱玩游戏";
cout << "str1 = " << str1 << endl;


string str2 = "LOL DNF";
string str3 = "I";
//通过append方法进行拼接
str3.append(" love ");
//通过apeend方法拼接前四个字符
str3.append("game abcde", 4);
// 从下标4位置开始,截取3个字符,拼接到字符串末尾
str3.append(str2, 4, 3); 
cout << "str3 = " << str3 << endl;

3.查找与替换

find和rfind方法进行查找操作

//find方法是进行从左往右查找
string str1 = "abcdefgde";
int pos = str1.find("de");
if (pos == -1)
{
	cout << "未找到" << endl;
}
else
{
	cout << "pos = " << pos << endl;
}

//rfind方法进行从左往右查看
int pos1 = str1.rfind("de");
if (pos1 == -1)
{
	cout << "未找到" << endl;
}
else
{
	cout << "pos1 = " << pos1 << endl;
}

通过replace进行替换

//从下标1开始,数3个字符进替换
string str1 = "abcdefgde";
str1.replace(1, 3, "1111");

cout << "str1 = " << str1 << endl;

4.字符串比较

通过用compare方法来比较字符串直接的大小,不过一般用来判断字符串之间是否相同

string s1 = "hello";
string s2 = "hello";

int ret = s1.compare(s2);
if (ret == 0) {
	cout << "s1 等于 s2" << endl;
}
else if (ret > 0)
{
	cout << "s1 大于 s2" << endl;
}
else
{
	cout << "s1 小于 s2" << endl;
}

5.字符串获取和字符串长度

通过[]方法或at方法来进行存取字符,size方法来获取字符串长度

//通过[]来获取字符
string str = "hello world";
for (int i = 0; i < str.size(); i++)
{
	cout << str[i] << " ";
}
cout << endl;

//通过at方法来获取字符
for (int i = 0; i < str.size(); i++)
{
	cout << str.at(i) << " ";
}
cout << endl;

//字符修改
str[0] = 'x';
str.at(1) = 'x';
cout << str << endl;

6.字符串的插入与删除

通过insert方法来插入字符,erase方法来删除字符

string str = "hello";
从下标1前插入字符
str.insert(1, "111");
cout << str << endl;

//从下标1开始3个字符进行删除
str.erase(1, 3); 
cout << str << endl;

7.字符串的子串获取

//从下标1处开始3个字符进行截取
string str = "abcdefg";
string subStr = str.substr(1, 3);
cout << "subStr = " << subStr << endl;

//首先查找’@‘字符的下标,然后从下标0处开始pos个字符进行截取
string email = "hello@sina.com";
int pos = email.find("@");
string username = email.substr(0, pos);
cout << "username: " << username << endl;

8.字符串的第一个字符和最后一个字符

通过迭代器const_iterator来获取第一个字符和最后一个字符;必须要以指针的形式输出,因为迭代器类似于指针类型,迭代器提供了对 对象的间接访问。

//获取字符串的第一个字符
 string str1="abcdef";
 string::const_iterator it = str1.begin();
 cout<<*it<<endl;

//end是指向最后一个字符后面的元素,而且不能输出,所以cout << *it << endl;这样输出会报错,所以需要进行it--来获取最后一个字符,和vector容器的使用类似
it = str1.end();
it--;
cout << *it << endl;

9.字符串倒置

通过reverse方法来进行字符串的倒置

string str1="abcdef";
reverse(str1.begin(), str1.end());
cout <<str1<< endl;

10.字符串转字符数组

//将字符串转字符数组
string c = "abcdf";
char *d = new char[20];
strcpy(d, c.c_str());
cout << "c:" << c << endl;
cout << "d:" << d[0] << endl;

我的c++的学习视频:黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难
参考博客:《黑马》——C++提高编程

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值