电脑在哪里制作网站企业网站建设公司上海

张小明 2026/1/5 19:03:22
电脑在哪里制作网站,企业网站建设公司上海,wordpress+手机站,外贸网站建设需要多少钱string类的使用一、auto 关键字#xff1a;简化类型声明的利器二、string 类#xff1a;更安全的字符串处理方案1、常见构造2、容量操作3、访问及遍历操作4、string 类的其他常用操作三、常用遍历1、C11遍历2、迭代器遍历3、for遍历四、string 类的实现原理#xff08;进阶简化类型声明的利器二、string 类更安全的字符串处理方案1、常见构造2、容量操作3、访问及遍历操作4、string 类的其他常用操作三、常用遍历1、C11遍历2、迭代器遍历3、for遍历四、string 类的实现原理进阶传统写法现代写法五、string 类的实际应用场景一、auto 关键字简化类型声明的利器自动类型推导无需显式指定类型编译器根据初始化值确定变量类型简化复杂声明对于迭代器、函数返回值等冗长类型auto能大幅精简代码指针与引用规则声明指针时auto与auto*效果一致如auto p a与auto* p a等价声明引用必须显式添加如auto ref a多变量声明限制同一行声明的多个变量必须为相同类型如auto a 1, b 2合法auto a 1, b 2.0非法使用限制必须在声明时初始化无法单独声明auto x;不能作为函数参数类型如void func(auto x)不合法不建议作为函数返回值类型可能导致类型模糊不能用于声明数组如auto arr[10]不合法#includeiostream#includetypeinfo// 需包含此头文件以使用 typeidusingnamespacestd;intgetNum(){return42;}intmain(){inta10;autoba;// 推导为 intautoca;// 推导为 charautodgetNum();// 推导为 intauto*pa;// 推导为 int*与 auto p a 等价autorefa;// 推导为 int// 打印推导的类型不同编译器输出可能略有差异coutb 的类型typeid(b).name()endl;// intcoutc 的类型typeid(c).name()endl;// charcoutd 的类型typeid(d).name()endl;// intcoutp 的类型typeid(p).name()endl;// int*return0;}二、string 类更安全的字符串处理方案C 标准库的string类封装了字符串的创建、修改和操作相比 C 风格字符数组char*提供了自动内存管理和丰富的成员函数是字符串处理的首选。核心优势自动内存管理无需手动malloc/free或new/delete避免内存泄漏安全性内置越界检查减少缓冲区溢出风险丰富接口提供拼接、查找、截取等便捷操作兼容性支持与 C 风格字符串const char*相互转换动态扩展可自动调整容量以适应字符串长度变化1、常见构造constructor函数名称功能说明string()构造空字符串默认构造string(const char* s)用 C 风格字符串初始化string(const strings)拷贝构造复制已有 string 对象string(size_t n, char c)构造包含 n 个字符 c 的字符串构造包含n个字符c的string类对象#includestringusingnamespacestd;intmain(){string s1;// 空字符串strings2(hello);// 用 C 字符串初始化strings3(s2);// 拷贝构造strings4(5,!);// 5个感叹号!!!!!couts2: s2endl;// 输出hellocouts4: s4endl;// 输出!!!!!return0;}2、容量操作函数名称功能说明size返回有效字符长度推荐使用替代length()empty判断字符串是否为空为空返回trueclear清空有效字符不释放底层内存reserve预留至少 n 个字符的空间提升插入效率resize(n, c)调整有效字符数为 n多余位置用 c 填充一般情况下都是用size()而不是length()2.clear()只是将string中有效字符清空不改变底层空间大小3.resize(n)与resize(n, c)的区别- 前者将多余位置初始化为空字符’\0’- 后者将多余位置初始化为指定字符 c- 若n大于当前容量会扩容若n小于当前长度仅截断不缩容4.reserve(n)仅预留空间不改变有效字符数n 小于当前容量时不做操作#includeiostreamusingnamespacestd;intmain(){strings1(hello world);couts1.size()endl;//11couts1.empty()endl;//0s1.clear();couts1endl;//打印空string s2;s2.reserve(100);couts2.capacity()endl;//111//左(要初始化个数)右(初始化的字符)s2.resize(4,c);couts2endl;//ccccreturn0;}3、访问及遍历操作方式适用场景operator[]通过下标访问支持读写类似数组beginend正向迭代器从首到尾遍历适用于所有 STL 容器begin()指向首字符end()指向尾字符后一位rbeginrend反向迭代器从尾到首遍历rbegin()指向尾字符rend()指向首字符前一位范围forC11 新增简洁遍历所有元素底层基于迭代器#includeiostream#includestringusingnamespacestd;intmain(){strings(hello);// 1. 下标访问cout第2个字符s[1]endl;// es[0]H;// 修改首字符为Hcout修改后sendl;// Hello// 2. 正向迭代器cout正向遍历;for(autoits.begin();it!s.end();it){cout*it ;// H e l l o}coutendl;// 3. 反向迭代器cout反向遍历;for(autoits.rbegin();it!s.rend();it){cout*it ;// o l l e H}coutendl;// 4. 范围 forC11cout范围for遍历;for(charch:s){coutch ;// H e l l o}coutendl;return0;}4、string 类的其他常用操作函数名称功能说明operator字符串拼接支持 string 或 C 字符串append()尾部追加字符串功能类似c_str()返回 C 风格字符串const char*find(sub, pos)从 pos 位置开始查找子串 sub返回起始索引未找到返回string::npossubstr(pos, len)从 pos 位置截取长度为 len 的子串默认截取到末尾compare()比较与字符串 s 的大小返回 0 表示相等#includeiostream#includestringusingnamespacestd;intmain(){string s1hello;string s2world;// 字符串拼接s1 ;s1s2;couts1endl;// 输出hello world// 查找操作size_t poss1.find(world);if(pos!string::npos){cout找到子串位置posendl;// 输出6}// 截取子串string s3s1.substr(6,5);couts3endl;// 输出world// C风格字符串转换constchar*cstrs1.c_str();coutcstrendl;// 输出hello worldreturn0;}三、常用遍历1、C11遍历适用于数组和支持下标访问的容器如 string、vector需要手动控制索引范围。#includeiostream#includestringusingnamespacestd;intmain(){//C98遍历intarray1[]{1,2,3,4,5};for(inti0;isizeof(array1)/sizeof(array1[0]);i){array1[i]*2;}for(inti0;isizeof(array1)/sizeof(array1[0]);i){coutarray1[i] ;}coutendl;return0;}2、迭代器遍历迭代器是 STL 容器的通用遍历方式适用于所有容器包括不支持下标访问的容器如 list、map 等。![[QQ20251203-213626.png]]#includeiostream#includestringusingnamespacestd;intmain(){strings1(hello world);//正向迭代器//string::iterator it s1.begin();autoits1.begin();while(it!s1.end()){cout*it ;it;}coutendl;//反向迭代器//string::reverse_iterator rit s1.rbegin();autorits1.rbegin();while(rit!s1.rend()){cout*rit ;rit;}coutendl;conststrings2(hello world);//const正向迭代器//string::const_iterator cit s2.begin();autocits2.begin();while(cit!s2.end()){cout*cit ;cit;}coutendl;//const反向迭代器//string::const_reverse_iterator rcit s2.rbegin();autorcits2.rbegin();while(rcit!s2.rend()){cout*rcit ;rcit;}return0;}3、for遍历一种简洁的遍历方式自动迭代容器中所有元素底层基于迭代器实现。语法格式for(元素类型 变量名:容器名){// 循环体}#includeiostream#includestringusingnamespacestd;intmain(){// 数组遍历intarray2[]{1,2,3,4,5};for(autoe:array2)// 使用引用避免拷贝支持修改元素e*2;for(autoe:array2)coute ;// 输出2 4 6 8 10coutendl;// 字符串遍历stringstr(hello world);for(autoch:str){coutch ;// 输出h e l l o w o r l d}coutendl;return0;}四、string 类的实现原理进阶了解 string 类的实现有助于更好地理解其特性下面展示两种经典的实现方式传统写法通过显式分配和释放内存实现深拷贝确保每个对象拥有独立的字符串资源classString{public:// 构造函数String(constchar*str){if(nullptrstr){assert(false);return;}_strnewchar[strlen(str)1];// 分配空间包含结束符strcpy(_str,str);// 拷贝内容}// 拷贝构造函数String(constStrings):_str(newchar[strlen(s._str)1]){strcpy(_str,s._str);}// 赋值运算符重载Stringoperator(constStrings){if(this!s)// 避免自赋值{char*pStrnewchar[strlen(s._str)1];strcpy(pStr,s._str);delete[]_str;// 释放旧空间_strpStr;// 指向新空间}return*this;}// 析构函数~String(){if(_str){delete[]_str;_strnullptr;}}private:char*_str;// 存储字符串};现代写法通过交换临时对象的资源简化代码利用临时对象的生命周期自动释放内存classString{public:// 构造函数String(constchar*str){if(nullptrstr){assert(false);return;}_strnewchar[strlen(str)1];strcpy(_str,str);}// 拷贝构造函数现代写法String(constStrings):_str(nullptr){StringstrTmp(s._str);// 创建临时对象swap(_str,strTmp._str);// 交换资源}// 赋值运算符重载现代写法Stringoperator(String s)// 传值参数会触发拷贝构造{swap(_str,s._str);// 交换资源临时对象会自动释放旧资源return*this;}// 析构函数~String(){if(_str){delete[]_str;_strnullptr;}}private:char*_str;};五、string 类的实际应用场景文本处理日志记录、配置文件解析、字符串格式化用户交互命令行输入输出、GUI 文本控件网络编程HTTP 协议处理、数据报文组装与解析文件操作路径处理、文件内容读写数据转换数值与字符串的相互转换掌握auto和string是 C 开发的基础合理使用能显著提升代码简洁性和安全性。实际开发中建议优先使用标准库提供的string而非 C 风格字符串减少内存管理风险。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

黑龙江住房和城乡建设厅网站首页昭通建设局网站

机场是一座城市留给人们的第一印象,承载着每年数十亿乘客、全球三分之一的贸易运输,机场、航空公司也正在不断寻求“智”变。5G、物联网、大数据、人工智能、云计算、集成数据采集正在改变民用航空的发展形态,交通行业迎来数字化转型的快速发…

张小明 2026/1/4 3:41:31 网站建设

网站源码搭建网站做影视网站什么cms好用吗

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个交互式MySQL学习工具,帮助新手理解only_full_group_by:1. 用简单示例解释GROUP BY原理;2. 演示典型的错误场景;3. 提供三种适…

张小明 2026/1/5 13:46:38 网站建设

企业网站设计费用微信开发网站建设程序

FaceFusion如何避免换脸后出现“塑料感”?在短视频与虚拟内容爆发的今天,AI换脸早已不再是实验室里的概念——从社交娱乐到影视制作,越来越多的应用依赖于高质量的人脸合成技术。然而,即便使用如FaceFusion这样的先进工具&#xf…

张小明 2026/1/5 15:36:42 网站建设

沈阳网站icp备案怎样做 云知梦 网站 付费网站

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

张小明 2026/1/5 10:03:41 网站建设

网站建设流程有哪些住房和城乡建设局待遇

第一章:Open-AutoGLM 首次运行失败的排查步骤首次运行 Open-AutoGLM 时,用户可能因环境配置、依赖缺失或权限问题导致启动失败。为快速定位并解决问题,应遵循系统化的排查流程。检查运行环境与依赖项 确保 Python 版本满足项目要求&#xff0…

张小明 2026/1/5 4:34:01 网站建设

医院网站开发wordpress域名 文件夹

目录 一、简单介绍 二、cubeMX配置 开调试口 开PWM 时钟 按键 三、代码编写 四、效果 五、备注 六、工程链接 一、简单介绍 TPS61165是一款白色LED灯驱动芯片,输入电压3~18V,开关电流最大1.2A。具有LED开路保护,可以PWM调光或者高低…

张小明 2026/1/4 3:27:40 网站建设