当前位置: 首页 > news >正文

cpp的string类

本篇将讲述string类中的各种重要和常用函数(string()、begin()、rbegin()、cbegin()、crbegin()、end()、rend()、cend()、crend()、范围for、size()、resize()、capacity()、reserve()、clear()、empty()、append()、push_back()、insert()、erase()、replace()、swap()、find()、rfind()、substr()、compare())。

所有函数使用时应当包含头文件<string>。

如果对您有帮助还请多多点赞,要是文章有错误地方还请你在评论区留言指正。

一、string()

1.string (const char* s)

作用:创建一个string对象,并初始化为字符串s。

用法:

	string s("Hello World");

2.string (size_t n, char c)

作用:创建一个string对象,并初始化为n个字符c。

用法:

	string s(4, 'q');

 3.string (const char* s, size_t n)

作用:创建一个string对象,并初始化为字符串s中的前 n个字符。

用法:

	string s("Hello World", 5);

4.string (const string& str)

作用:创建一个string对象,初始化为对象str相同的字符串。

用法:

string str("Hello World");
string s(str);

5.string (const string& str, size_t pos, size_t len = npos)

作用:创建一个string对象,并初始化成从str的下表为pos开始(第pos个字符之后)的前len个字符。

用法:

string str("Hello World");
string s(str,6,5);

二、string& operator= ()

运算符重载

作用:可以将字符串,字符,或者一个string对象赋值给另一个string对象。

用法:

string s1, s2, s3;
string str("Hello World");
s1 = str;//string& operator= (const string& str);
s2 = "Hello";//string& operator= (const char* s);
s3 = 'Q';//string& operator= (char c);
cout << s1 << endl << s2 << endl << s3 << endl;

 三、迭代器(Iterators

1.begin()和 end() 

iterator begin();
const_iterator begin() const;

作用:返回指向的字符串的第一个字符的迭代器。

用法:

string str("Hello World");
std::string::iterator it = str.begin();
cout << *it << endl;

iterator end();
const_iterator end() const;

作用:返回一个迭代器,该迭代器指向字符串的最后一个字符。

用法:一般与begin连着使用。

string str("Hello World");
std::string::iterator it = str.begin();
for (it; it != str.end(); it++)
{cout << *it << ' ';
}

 2.rbegin()和rend()

reverse_iterator rbegin();
const_reverse_iterator rbegin() const;

作用:返回一个反向迭代器,该迭代器指向字符串的最后一个字符(即其反向开头),反向迭代器是反向迭代的,增加它们会让它们向开头的地方移动。

reverse_iterator rend();
const_reverse_iterator rend() const;

作用:返回一个反向迭代器,该迭代器指向字符串第一个字符之前的理论元素(被视为其反向端)。 

用法:rbegin()和rend()一般是联合使用的。

string str("Hello World");
std::string::reverse_iterator rit = str.rbegin();
for (rit; rit != str.rend(); rit++)
{cout << *rit << ' ';
}

3.cbegin()和cend()

用法:与1中的begin()和end()用法类似 只是不能改变其指向的内容。

4.crbegin()和crend()

用法:与1中的rbegin()和rend()用法类似 只是不能改变其指向的内容。

5.范围for

作用:遍历一个整个字符串。

用法:

string str("Hello World");
for (auto ch:str)
{cout << ch << ' ';
}

三、容量(Capacity) 

1.size()

 

作用:返回字符串的长度(以字节为单位)。

用法:

string str("Hello World");
size_t i=str.size();
cout << i << endl;

2.resize()

作用:将字符串大小调整到n个字符的长度,如果原先的字符个数比n打则删除多余的保留前n个,如果比n小则用字符填补剩余位置使其达到n个字符,如果给定了字符c则在剩余位置填补字符c,如果没给定则填补空字符。

用法:

string s1("Hello World"), s2("Hello World"), s3("Hello World");
s1.resize(5);
s2.resize(15);
s3.resize(15, 'Q');
cout << s1 << endl <<s2 << endl<< s3 << endl;

3.capacity()

作用:返回该对象中字符串所占的空间大小也就是其储存字符的能力大小(与size()不同)。

用法:

string str("Hello World");
size_t i = str.capacity();
cout << i << endl;

4.reserve()

作用:将字符串容量调整到n,如果n大于原先的容量则扩充到n(可能比n大)。

用法:

string str("Hello World");
size_t i = str.capacity();
str.reserve(20);
size_t j = str.capacity();
cout << i <<' '<<j<< endl;

 5.clear()

作用:清除字符串的内容,将该字符串变成空字符串。

用法:

string str("Hello World");
str.clear();
cout << str << endl;

6.empty()

作用:判断字符串是否为空,如果为空则返回true,否则返回false。 

用法:

string str("Hello World");
cout << str.empty() << endl;
str.clear();
cout << str.empty() << endl;

四、operator[]

作用:可以将字符串像数组一样进行下标访问。 

用法:

string str("Hello World");
cout << str[4] << endl;

 五、修饰符(Modifiers

1.operator+=

作用:在string对象的尾部插入一个字符、字符串、或者一个string对象。

用法:

string s1("Hello World"), s2("Hello World"), s3("Hello World");
s1 += s2;
s2 += "world";
s3 += 'Q';
cout << s1 << endl << s2 << endl << s3 << endl;

2.append()和push_back()

作用:功能上大差不差都是插入字符或者字符串。

3.insert()

作用:在字符串pos指向的字符的前面插入字符或者字符串。 

用法:

string str("Hello World");
str.insert(str.begin(), 'Q');
cout << str << endl;

4.erase()

作用:在字符串pos指向的字符后面开始向后删除len个字符。

用法:

string str("Hello World");
str.erase(5, 5);
cout << str << endl;

5.replace() 

作用:将字符串pos指向的字符后len个字符替换成字符串str。

用法:

string str("Hello World");
str.replace(str.find('e'), 6, "Q");
cout << str << endl;

6.swap()

 

作用:将一个字符串与另一个字符串进行交换。 

string s1("qqqqq"), s2("wwww");
cout << s1 << "   " << s2 << endl;
s1.swap(s2);
cout << s1 << "   " << s2 << endl;

六、find()和rfind()

1.find()

作用:从字符串pos指向的字符开始向后找字符c或者字符串s,并返回第一次找到的元素下标,如果没找到则返回npos。

用法:

string str("Hello World");
cout << str.find('r') << endl;
cout << str.find('q') << endl;

2.rfind()

作用:和find几乎相同,只不过rfind是 从后往前遍历,也就是返回最后一个与之对应的元素的下标,如果未匹配则返回npos。

用法:

string str("Hello World Hello World ");
cout << str.rfind('r') << endl;

七、substr()和compare()

1.substr()

作用:将字符串pos指向的字符开始向后截取len个字符并将其赋值给一个新构造的对象。

 用法:

string str("Hello World");
string s = str.substr(5, 6);
cout << s << endl;

2.compare()

 作用:将两字符串进行比较返回整数。

 用法:

string str("Hello World");
string s("qweffj");
cout << str.compare(s) << endl;


http://www.mrgr.cn/news/58397.html

相关文章:

  • 移动开发(五):.NET MAUI中自定义主题设置
  • Spring Boot:植物健康的智能守护者
  • 搞副业的程序员们,建议看下这20个技术接单/远程平台,零基础入门到精通,收藏这一篇就够了
  • 论文阅读(十六):Deep Residual Learning for Image Recognition
  • gitlab 迁移
  • 019集——global全局引用报错解决方案(全局using指令在c#7.3中不可用)(CAD—C#二次开发入门)
  • 如何对网络设备进行监控:以监控易平台为例
  • 对数平均温差计算
  • 文档透明加密系统怎么用?五款透明加密软件汇总!2024热门推荐,实测分享!
  • Pytest-Bdd-Playwright 系列教程(2):支持在多浏览器、多环境中执行测试
  • 大语言模型训练方式探索(基于llma3模型)
  • 使用docker-compose部署一个springboot项目(包含Postgres\redis\Mongo\Nginx等环境)
  • java中this的内存原理是?
  • 伦敦银是24小时交易吗?
  • 《证据规定》之鉴定人拒不出庭的法律后果
  • 100 个常见网络基础知识普及
  • 爱回收品牌ID查询接口技术实现与代码示例
  • 雷池社区版有多个防护站点监听在同一个端口上,匹配顺序是怎么样的
  • 病毒分析-SysTracer工具监控进行行为
  • 自动化测试:等待方式
  • Java泛型Generic
  • HuYa 2.1.18.4| 聚合多平台的电视直播软件
  • OpenFace安装教程及踩坑记录 (Ubuntu20.04—2024.10.24)
  • 私域小程序怎么运营,如何引流?(三)
  • 基于神经网络的农业病虫害损失预测
  • 双十一好用的家居好物有哪些?这五款产品绝对值得入手!