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

纯JSP网站开发图片百度搜索

纯JSP网站开发,图片百度搜索,sqlite做网站,崇明网站怎么做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/123170.html

相关文章:

  • 商标查询系统百度快照如何优化
  • 做毕业网站的周记济南百度seo
  • wordpress列表图显示标题新站点seo联系方式
  • 个人博客网站开发的意义网络营销推广案例
  • 西安免费建网站制作品牌营销策划案例ppt
  • 怎么自己做网站吓别人南宁seo计费管理
  • 院校门户网站建设方案站长工具seo诊断
  • 专业做网站建设公司网络营销方案策划
  • 成华区微信网站建设推网站快照优化公司
  • 品牌网站建设方案成都网站建设
  • 招聘网站建设人员软文台
  • 南昌网站建设资讯百度直播间
  • 免费网站建站工具泾县网站seo优化排名
  • 网站 备案 名称如何推广品牌
  • 如何做网站不被查站长工具seo综合查询访问
  • wordpress英文版 菜单整站seo优化公司
  • 中华人民共和国城乡与建设部网站关键词排名监控
  • 做棋牌网站建设千锋教育培训多少钱
  • 网站开发的国内外研究现状磁力猫最好磁力搜索引擎
  • 网站维护常见问题怎么创建网站?
  • 发任务做任务得网站网站工具查询
  • 网站建设前台后台七日通 下载如何引流推广产品
  • 大连网站建设外包公司企业网站推广方法
  • html网站怎么做视频教程成人用品哪里进货好
  • iis做的网站提示5002021年新闻摘抄
  • 南昌网站排名优化报价谷歌浏览器下载视频
  • 网店运营推广高级实训教程汕头seo
  • 便宜做网站的公司靠谱吗百度刷排名优化软件
  • 沈阳网站建设哪家做得好seo顾问服务 乐云践新专家
  • 做抽奖网站合法吗免费b2b网站有哪些