STL:string

初始化

#include <string>
  • 初始化方式1:
string str1("hello world");
string str2 = "hello world";
string str3 {"hello world"};
string str4 = {"hello world"};
  • 初始化方式2:
string str1(10, 'a');  //包含10个‘a’
  • 初始化方式3:
string str1 = "abcd";// 利用拷贝构造函数
string str2(str1);

赋值与拼接

  • 赋值操作:
string str1 = "abcdefg";
string str2;
str2 = str1;
  • 拼接操作
string str1 = "hello "
string str2 = "world!"
string str3 = str1 + str2;

插入与删除

  1. push_backpop_back:
string str1;
str1.push_back('d');  //末尾插入一个字符
str1.pop_back();   //末尾删除一个字符
  1. append:
string str = "";
str.append(2, 'a');   //str = "aa";

子串

  1. substr(起始下标,长度):
string str = "abcdefg";
string str1 = s.substr(0, 4);
  1. find:
string str = "abcdefg";
int index = str.find('a');  //寻找字符
int index = str.find("abc");  //寻找字符串
string str = "abcdbefg";
int index = str.find('b', 1)  //从下标1(包含下标1)开始查找
  1. find返回的是指定字符或字符串在原字符串中的下标
  2. find若查找不成功,则返回str.npos的int类型的值
  1. 从指定下标(包含该下标)开始查找特定的字符/子串
    在这里插入图片描述

长度与容量

  1. resizesizecapacity:
string str = "abcd";   //str.size()为4
str.size();  //字符串长度为4
str.capacity(); //字符串的容量也为15

str.resize(2*str.size()); //修改字符串的长度

str.size();  //字符串的长度仍然为8
str.capacity();  //字符串的容量为15
  1. resize不修改字符串的容量,只修改字符串的长度
  2. capacity不常用,一般用size即可

string与int的转换

int转为string

  1. 利用to_string函数:
int x = 10;
string s_x = std::to_string(x);
  1. 利用stringstream:
#include <sstream>
int x = 10;
stringstream ss;
ss<<x;
string str = ss.str();
  1. 错误做法:
    (1)char * str = ss.str();
    (2)const char * str = ss.str()
  2. stringstream可以将多种类型的数据转为string类型

string转为int

  1. 利用atoi函数:
string str = "1234";
int x = atoi(str.c_str());
  1. 函数atoi的输入数据的类型为const char *char *类型,因此无法将string类型的数据传入,需要先将string类型转为const char *类型
  1. 利用stringstream
#include <sstream>
string str = "12345";
stringstream ss;
ss<<str;
int x;
ss>>x;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_46427273

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值