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

做网站怎么提取视频无广告seo工资服务

做网站怎么提取视频无广告,seo工资服务,什么网站可以做行测,织梦手机网站怎么做目录 一、 string 类的基本使用 1. 字符串的定义和初始化 2. 遍历字符串 下标访问方式 迭代器访问方式 正向迭代器: 反向迭代器: 范围 for 循环方式 二、 string 类的成员函数 1. 容量相关函数 2. 扩容机制 三、迭代器与容器的配合 1. vec…

目录

一、 string 类的基本使用

1. 字符串的定义和初始化

2. 遍历字符串

下标访问方式

迭代器访问方式

正向迭代器:

反向迭代器:

范围 for 循环方式

二、 string 类的成员函数

1. 容量相关函数

2. 扩容机制

三、迭代器与容器的配合

1.  vector 容器的迭代器使用

2.  list 容器的迭代器使用

四、实际应用案例:字符串数字相加


一、 string 类的基本使用

在C++ 中, string 类是用于处理字符串的强大工具。它包含在 <string> 头文件中。下面是一些基本的使用示例:

1. 字符串的定义和初始化

cpp#include <iostream>#include <string>int main() {std::string s0; // 定义一个空字符串std::string s1("hello world"); // 使用字符串字面量初始化std::cout << s1 << std::endl;return 0;}

在上述代码中,我们定义了一个空字符串 s0 和一个初始化为"hello world"的字符串 s1 ,并将 s1 输出到控制台。

2. 遍历字符串

下标访问方式

cpp#include <iostream>#include <string>int main() {std::string s1("hello world");for (size_t i = 0; i < s1.size(); i++) {std::cout << s1[i];}std::cout << std::endl;return 0;}

通过 size() 函数,length也行,但不推荐获取字符串长度,利用下标 [] 操作符遍历字符串中的每个字符并输出。

迭代器访问方式(类似于指针,但不完全是)

正向迭代器:
cpp#include <iostream>#include <string>int main() {std::string s1("hello world");std::string::iterator it = s1.begin();while (it != s1.end()) {std::cout << *it << " ";++it;}std::cout << std::endl;return 0;}

这里使用 begin() 函数获取指向字符串开头的迭代器, end() 函数获取指向字符串末尾(实际是末尾元素的下一个位置)的迭代器,通过迭代器遍历并输出字符。

反向迭代器:
cpp#include <iostream>#include <string>int main() {std::string s1("hello world");std::string::reverse_iterator rit = s1.rbegin();while (rit != s1.rend()) {std::cout << *rit << " ";++rit;}std::cout << std::endl;return 0;}

 rbegin() 函数获取指向字符串末尾的反向迭代器, rend() 函数获取指向字符串开头(实际是开头元素的前一个位置)的反向迭代器,实现反向遍历。

范围 for 循环方式

cpp#include <iostream>#include <string>int main() {std::string s1("hello world");for (auto ch : s1) {std::cout << ch << " ";}std::cout << std::endl;return 0;}

范围 for 循环会自动遍历字符串中的每个字符,代码简洁明了。

二、 string 类的成员函数

1. 容量相关函数

-  size() 和 length() :这两个函数功能相同,都用于返回字符串中有效字符的个数。

-  capacity() (借鉴数据结构):返回当前字符串在重新分配内存之前能够存储的字符数。

-  max_size()(不稳定,取决于编译器) :返回字符串能够容纳的最大字符数。

示例代码:

cpp#include <iostream>#include <string>int main() {std::string s1("hello world");std::cout << "size: " << s1.size() << std::endl;std::cout << "length: " << s1.length() << std::endl;std::cout << "capacity: " << s1.capacity() << std::endl;std::cout << "max_size: " << s1.max_size() << std::endl;return 0;}

2. 扩容机制

当向字符串中添加元素导致当前容量不足时, string 类会自动扩容。以下是演示 string 扩容过程的代码:

cpp#include <iostream>#include <string>int main() {std::string s1;size_t old = s1.capacity();for (size_t i = 0; i < 100; i++) {s1 += 'x';if (old != s1.capacity()) {std::cout << "扩容: " << s1.capacity() << std::endl;old = s1.capacity();}}return 0;}

在这个示例中,每次向字符串 s1 添加一个字符 'x' ,如果容量发生变化,就输出新的容量值。通常 string 的扩容策略是按照一定倍数(常见为1.5倍或2倍)增加容量。

不同编辑器有所不同:

三、迭代器与容器的配合(只做示范,后期具体会分析)

在C++ 中,迭代器不仅用于 string 类,还广泛应用于其他容器,如 vector 、 list 等,并且使用方式类似。

1.  vector 容器的迭代器使用

cpp#include <iostream>#include <vector>int main() {std::vector<int> v;v.push_back(1);v.push_back(2);v.push_back(3);v.push_back(4);std::vector<int>::iterator vit = v.begin();while (vit != v.end()) {std::cout << *vit << " ";++vit;}std::cout << std::endl;return 0;}

这里创建了一个 vector 容器并插入一些元素,通过迭代器遍历并输出容器中的元素。

2.  list 容器的迭代器使用

cpp#include <iostream>#include <list>int main() {std::list<int> lt;lt.push_back(10);lt.push_back(20);lt.push_back(3);std::list<int>::iterator lit = lt.begin();while (lit != lt.end()) {std::cout << *lit << " ";++lit;}std::cout << std::endl;return 0;}

对于 list 容器,同样使用迭代器来遍历其中的元素。

此外,还可以使用标准算法结合迭代器对容器进行操作,例如:

cpp#include <iostream>#include <vector>#include <algorithm>int main() {std::vector<int> v = {4, 2, 3, 1};std::reverse(v.begin(), v.end()); // 反转vectorfor (auto e : v) {std::cout << e << " ";}std::cout << std::endl;std::sort(v.begin(), v.end()); // 排序vectorfor (auto e : v) {std::cout << e << " ";}std::cout << std::endl;return 0;}

 reverse 算法用于反转容器中的元素顺序, sort 算法用于对容器中的元素进行排序,它们都通过迭代器指定操作的范围。

四、实际应用案例:字符串数字相加(下期详解)

假设有两个用字符串表示的数字,需要将它们相加并以字符串形式返回结果。以下是实现代码:

cpp#include <iostream>#include <string>std::string addStrings(std::string num1, std::string num2) {int end1 = num1.size() - 1, end2 = num2.size() - 1;std::string strRet;int carry = 0;while (end1 >= 0 || end2 >= 0) {int val1 = end1 >= 0? num1[end1] - '0' : 0;int val2 = end2 >= 0? num2[end2] - '0' : 0;int ret = val1 + val2 + carry;carry = ret / 10;ret = ret % 10;strRet += ('0' + ret);--end1;--end2;}if (carry > 0) {strRet += ('0' + carry);}std::reverse(strRet.begin(), strRet.end());return strRet;}

在这个函数中,我们从两个字符串数字的末尾开始逐位相加,处理进位情况,最后将结果字符串反转得到正确的顺序。

通过对 string 类和迭代器的深入学习与实践,可以更好地处理字符串相关操作以及对容器进行遍历和算法操作,提高C++ 编程的效率和能力。

http://www.dtcms.com/wzjs/172354.html

相关文章:

  • 阳高县网站建设网站结构优化
  • 怎么做自己的一个网站公司网站建站要多少钱
  • 查询网站所有关键词排名seo优化技巧有哪些
  • 做网站的细节百度销售
  • 长宁区网站建设开seo网站推广seo
  • asp.net动态网站开发试题广州市口碑seo推广外包
  • wdcp备份的数据库网站文件在哪里微信营销推广的方式有哪些
  • 小程序开发平台哪个产品好seo网站优化技术
  • 长沙外贸网站百度推广产品
  • 极简logo手绘图廊坊seo推广
  • 网站开发的税率是多少不受国内限制的浏览器下载
  • 情侣wordpress模板下载网站优化+山东
  • frontpage做网站360上网安全导航
  • 介绍做素食的网站百度推广工具有哪些
  • 装修效果图软件app哪个好湖南seo
  • 遵义做百度网站一年多少钱网络产品运营与推广
  • 网站证书打印格式不正确谷歌google play官网下载
  • 网站优化联系如何优化网站快速排名
  • 百度推广建设网站是干什么了网络推广平台有哪些公司
  • 表白二维码制作网站网络优化公司哪家好
  • 微商网站如何做推广电商营销推广方法
  • 公司独立网站平台建设湖南网站托管
  • 荔湾区做网站公司廊坊网站排名优化公司哪家好
  • 河北做it的网站律师网络推广
  • 哈密网站制作公司seo诊断站长
  • 安卓手机软件开发外包某企业网站的分析优化与推广
  • 青岛优化网站诊断完整的网页设计代码
  • 长沙知名网站建设百度快速收录seo工具软件
  • 做网站需要多少资金网络营销案例分享
  • 阿里巴巴网站建设电商网站推广方案