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

微信公众号怎么做微网站抖音推广平台

微信公众号怎么做微网站,抖音推广平台,网站qq微信分享怎么做的,网站举报官网一、string类 1、为什么要学习string? C语言中,字符串是以\0结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP(面向对象…

一、string类

1、为什么要学习string?

C语言中,字符串是以'\0'结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP(面向对象编程)的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问。在OJ中,有关字符串的题目基本以string类的形式出现,而且在常规工作中,为了简单、方便、快捷,基本都使用string类,很少有人去使用C库中的字符串操作函数。

2、介绍

1. 字符串是表示字符序列的类。
2. 标准的字符串类提供了对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于操作单字节字符字符串的设计特性。
3. string类是使用char(即作为它的字符类型,使用它的默认char_traits和分配器类型
4. string类是basic_string模板类的一个实例,它使用char来实例化basic_string模板类,并用char_traits和allocator作为basic_string的默认参数
5. 注意,这个类独立于所使用的编码来处理字节:如果用来处理多字节或变长字符(如UTF-8)的序列,这个类的所有成员(如长度或大小)以及它的迭代器,将仍然按照字节(而不是实际编码的字符)来操作。

3、特点

1. string是表示字符串的字符串类
2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。
3. string在底层实际是:basic_string模板类的别名,typedef basic_string<char, char_traits, allocator> string;
4. 不能操作多字节或者变长字符的序列。
5、在使用string类时,必须包含#include头文件以及using namespace std;

4、string类常用构造函数

1、string() :构造空的string类对象,即空字符串(重点)
2、string(const char* s) :用C-string来构造string类对象(重点)
3、string(const string&s) 拷贝构造函数(重点)
4、string(size_t n, char c) :string类对象中包含n个字符c
	//空字符串string test1;//用C-string构造string类对象string test2("hello");//拷贝构造string test3 = test1;string test4(test2);//使string对象包含n个字符string test5(5, 'a');

注意:string类是重载了流插入和留提取运算符,所以其对象可以直接使用cout和cin;

这里只举例常见的构造,具体可前往官网查看文档。

5、string类的析构函数

因为string类支持cin,所以底层实现是右new操作符动态开辟空间的,所以需要析构函数~string()释放,但析构函数是自动调用的,所以平时可以不管。

6、string类对象的遍历和访问

(1)、利用流插入运算符重载

(2)、string类运算符重载了[ ],所以可以用[ ]进行读写(注意[ ]重载提供了两个版本,有个版本用const修饰了this指针,返回值也会const引用,所以只可读不能写,具体查看文档)

int main()
{string s1("hello world");//读for (int i = 0; i < s1.size(); i++){cout << s1[i] << " ";}cout << endl;//写:字符串逆序int begin = 0;int end = s1.size() - 1;while (begin < end){swap(s1[begin], s1[end]);begin++;end--;}cout << s1;return 0;
}

(3)、利用迭代器iterator(用法像指针):

int main()
{string s1("hello");string::iterator it = s1.begin();while (it != s1.end()){cout << *it << " ";++it;}cout << endl;return 0;
}

这里begin()指向第一个位置,end()指向数据内容的后一个位置;

因为[ ]只适合部分容器,如树形、哈希结构、链式结构等等只能用迭代器,迭代器才是容器访问的主流。

知道了迭代器,那么容器逆序可以用一个函数模版:

reverse(s1.begin(), s1.end());

reverse函数需要左闭右开的区间,而迭代器的begin和end刚好满足。

需要注意迭代器的两个写法:

(4)、范围for(适用于多种容器,相比上述几种方式是最便捷的,但底层会替换成迭代器)

string s1("hello");for (auto e : s1)
{cout << e << " ";
}
cout << endl;

http://www.hkea.cn/news/233948/

相关文章:

  • 上海做网站国际财经新闻
  • 用废旧盒子做家用物品网站seo排名工具
  • 企业铭做网站域名解析在线查询
  • 怎么注册自己的小程序网站优化分析
  • 荆州网站建设流程网站设计培训
  • 网站支付怎么做的seo职业技能培训班
  • 做csgo直播网站上海知名网站制作公司
  • 深圳住建局官方网站seo网站关键词优化快速官网
  • 网站建设需要php吗企业的互联网推广
  • 苏中建设集团官方网站电商软文广告经典案例
  • 网站开发需要什么开发工具代做百度首页排名价格
  • 北京网站设计多少钱微信引流推广
  • 网站建设实施背景分析百度指数里的资讯指数是什么
  • 小程序定制开发深圳公司网站的优化seo
  • 构建一个网站域名查询平台
  • 蚌埠网站关键词优化推广下载
  • 看房地产的app在哪看aso安卓优化
  • 网站与域名的区别扬州整站seo
  • 哪些网站可以进行域名注册公司关键词seo
  • 如何申请一个网站 做视频百度小说搜索热度排行榜
  • 天津做网站选择津坤科技b重庆seo教程搜索引擎优化
  • 什么网站做热能表好百度一下电脑版首页网址
  • 点击图片直接进入网站怎么做如何使用免费b站推广网站
  • 手机网站建设软件怎么在百度上做广告推广
  • 南京做网站团队手机app免费制作平台
  • 17173游戏网搜索优化指的是什么
  • 公司做网站需要给百度交钱吗百度竞价推广方案
  • 网站建设的关键seo推广小分享
  • 写小说的小网站百度关键词排名优化
  • 制作网站的成本规划公司如何建立网站