C++:字符串string类使用

C++字符串和C字符串的对比

(1)C语言严格说没有字符串的概念,C字符串其实就是字符数组或字符指针
(2)C++和之后的java等都有字符串,本质是一个class
(3)C++字符串的优势是标准库自带可用于字符串的各种处理算法和方法
(4)C++实际开发中建议使用C++字符串而不是沿用C式字符串

字符串string类使用

    std::string str = "Hello, World!";// 使用 size() 获取字符串长度std::cout << "Size of the string: " << str.size() << std::endl;// 使用 length() 也可以获取字符串长度std::cout << "Length of the string: " << str.length() << std::endl;// 获取字符串的最大容量std::cout << "Max size of the string: " << str.max_size() << std::endl;// 调整字符串大小为 10str.resize(10);std::cout << "Resized string: " << str <<"|"<< std::endl; // 输出 "Hello, Wor"// 获取当前字符串的容量std::cout << "Capacity of the string: " << str.capacity() << std::endl;// 请求字符串的容量至少为 20str.reserve(20);std::cout << "Capacity after reserve: " << str.capacity() << std::endl;// 尝试减少字符串的容量str.shrink_to_fit();std::cout << "Capacity after shrinking: " << str.capacity() << std::endl;// 清空字符串str.clear();std::cout << "String after clear: " << str << std::endl; // 输出 ""// 检查字符串是否为空if (str.empty()) {std::cout << "String is empty." << std::endl;} else {std::cout << "String is not empty." << std::endl;}
  std::string str = "12345";int num = std::stoi(str);std::cout << "The integer value is: " << num << std::endl;str = "9876543210";long int num1 = std::stol(str);std::cout << "The long integer value is: " << num1 << std::endl;str = "4294967295";  // Max value of unsigned intunsigned int num2 = std::stoul(str);std::cout << "The unsigned integer value is: " << num2 << std::endl;str = "9223372036854775807";  // Max value of long longlong long num3 = std::stoll(str);std::cout << "The long long value is: " << num3 << std::endl;str = "18446744073709551615";  // Max value of unsigned long longunsigned long long num4 = std::stoull(str);std::cout << "The unsigned long long value is: " << num4 << std::endl;str = "3.14159";float num5 = std::stof(str);std::cout << "The float value is: " << num5 << std::endl;str = "2.718281828459045";double num6 = std::stod(str);std::cout << "The double value is: " << num6 << std::endl;str = "1.4142135623730950488";long double num7 = std::stold(str);std::cout << "The long double value is: " << num7 << std::endl;int num8 = 12345;std::string str1 = std::to_string(num8);std::cout << "The string representation is: " << str1 << std::endl;double num9 = 3.141592653589793238;std::wstring wstr = std::to_wstring(num9);std::wcout << "The wide string representation is: " << wstr << std::endl;return 0;
  std::string str = "Hello";// 使用 operator+= 追加字符串str += ", World!";// 使用 append 方法追加字符串str.append(" How are you?");std::cout << "String after append: " << str << std::endl;// 使用 push_back 方法追加字符 '!'str.push_back('!');std::cout << "String after push_back: " << str << std::endl;// 使用 insert 方法在位置 5 插入字符串 ", World"str.insert(5, ", World");std::cout << "String after insert: " << str << std::endl;// 使用 erase 方法从位置 7 开始删除 6 个字符str.erase(7, 6);  // 删除 ", World"std::cout << "String after erase: " << str << std::endl;// 使用 replace 方法替换从位置 7 开始的 5 个字符为字符串 "Universe"str.replace(7, 5, "Universe");std::cout << "String after replace: " << str << std::endl;// 使用 pop_back 方法删除最后一个字符 '!'str.pop_back();std::cout << "String after pop_back: " << str << std::endl;// 使用 assign 方法将字符串内容替换为 "Goodbye"str.assign("Goodbye");std::cout << "String after assign: " << str << std::endl;std::string str1 = "Hello";std::string str2 = "World";// 使用 swap 方法交换两个字符串的内容str1.swap(str2);std::cout << "String 1 after swap: " << str1 << std::endl;std::cout << "String 2 after swap: " << str2 << std::endl;
  std::string str = "Hello, World!";// 使用 c_str 方法获取 C 字符串等价物的指针const char* cstr = str.c_str();// 使用 data 方法获取字符数组的指针const char* data = str.data();std::cout << "C string equivalent: " << cstr << std::endl;std::cout << "String data: " << data << std::endl;char buffer[20];// 使用 copy 方法将字符串的前 4 个字符复制到字符数组中str.copy(buffer, 4);buffer[4] = '\0';  // 手动添加结尾的 null 字符std::cout << "Copied string: " << buffer << std::endl;// 从位置 7 开始,长度为 5 的子字符串std::string substr1 = str.substr(7, 5);  // "World"std::cout << "Substring 1: " << substr1 << std::endl;// 从位置 0 开始直到末尾的子字符串std::string substr2 = str.substr(0);  // "Hello, World!"std::cout << "Substring 2: " << substr2 << std::endl;// 从位置 7 开始直到末尾的子字符串std::string substr3 = str.substr(7);  // "World!"std::cout << "Substring 3: " << substr3 << std::endl;std::string str1 = "apple";std::string str2 = "banana";// 比较字符串大小int result1 = str1.compare(str2);if (result1 < 0)std::cout << "str1 is less than str2" << std::endl;else if (result1 == 0)std::cout << "str1 is equal to str2" << std::endl;elsestd::cout << "str1 is greater than str2" << std::endl;// 比较子字符串大小int result2 = str1.compare(0, 3, str2, 0, 3);  // 比较 "app" 和 "ban"if (result2 < 0)std::cout<< "First 3 characters of str1 are less than first 3 characters of str2"<< std::endl;else if (result2 == 0)std::cout<< "First 3 characters of str1 are equal to first 3 characters of str2"<< std::endl;elsestd::cout << "First 3 characters of str1 are greater than first 3 ""characters of str2"<< std::endl;

总结

熟悉符串string类相关方法的使用

学习记录,侵权联系删除。
来源:朱老师物联网大课堂

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/32771.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高可用电商支付架构设计方案

高可用电商支付架构设计 在现代电商业务中&#xff0c;支付过程是其中至关重要的一环&#xff0c;一个高可用、安全稳定的支付架构不仅可以提高整个系统的可靠性和扩展性&#xff0c;降低维护成本&#xff0c;还可以优化用户体验&#xff0c;增加用户黏性。 本文将提出一种高…

121.网络游戏逆向分析与漏洞攻防-邮件系统数据分析-邮件读取与发送界面设计

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果 现在的代码都是依据数据包来写的&#xff0c;如果看不懂代码&#xff0c;就说明没看懂数据包…

Vue 路由跳转时携带参数怎么写?(持续完善中...)

Vue前端中由A页面跳转至B页面&#xff0c;需要携带参数&#xff0c;应该怎么样实现呢&#xff1f; 一、参数为id A页面&#xff1a; // 点击跳转链接&#xff0c;并携带id至B页面 const toViewNewsDetail (value) > {const path /newsPublish/newsDetail;router.push({…

Kubernetes之Service详解

本文尝试从Service暴露服务方式、Service控制器实现原理、使用规范等方面对Kubernetes 中的Service进行详细介绍。 一、Kubernetes 中的pod有哪些暴露服务的方式 各种 Kubernetes 中暴露服务的方式都有其独特的优缺点&#xff0c;根据具体的使用场景和需求&#xff0c;选择合…

在Windows10中使用Vim

服务器没有图形界面&#xff0c;但是numpy包又需要调用图形界面接口&#xff0c;这样就导致了错误&#xff0c;搞得我只好先回windows开发。看来当年 Ubuntu桌面版也不算是多此一举啊。 这么多ide我还是喜欢vim&#xff0c;因为它真的太简单了。咱们这个老年机启动的也非常快&…

【jenkins1】gitlab与jenkins集成

文章目录 1.Jenkins-docker配置&#xff1a;运行在8080端口上&#xff0c;机器只要安装docker就能装载image并运行容器2.Jenkins与GitLab配置&#xff1a;docker ps查看正在运行&#xff0c;浏览器访问http://10....:8080/2.1 GitLab与Jenkins的Access Token配置&#xff1a;不…

力扣爆刷第153天之TOP100五连刷31-35(合并区间、编辑距离、复原IP)

力扣爆刷第153天之TOP100五连刷31-35&#xff08;合并区间、编辑距离、复原IP&#xff09; 文章目录 力扣爆刷第153天之TOP100五连刷31-35&#xff08;合并区间、编辑距离、复原IP&#xff09;一、56. 合并区间二、124. 二叉树中的最大路径和三、72. 编辑距离四、19. 删除链表的…

Kubernetes排错(七)-Pod 状态一直 ContainerCreating

查看 Pod 事件 $ kubectl describe pod apigateway-6dc48bf8b6-l8xrw -n cn-staging 异常原因 1&#xff09;no space left on device ... Events:Type Reason Age From Message---- ------ …

Google项目管理总览(一)

目录 一、项目管理基础 1.1、项目 1.2、项目管理 1.2.1、重要性&#xff08;why&#xff09; 1.2.2、项目生命周期 1.2.3、方法论&#xff08;项目管理&#xff09; 1.3、项目经理 1.3.1、构建人际关系的技巧 1.3.2、注意 1.4、组织架构 1.5、组织文化 二、Project …

Crypto/Util/number.py“, line 139 value |= 2L ** (N-1) # Ensure high bit is set

Crypto/Util/number.py", line 139 value | 2L ** (N-1) # Ensure high bit is set 解决办法 pip3 install pyrebase4

[SAP ABAP] 读取内表数据

1.读取单条数据 1.1 索引查找 语法格式 READ TABLE <itab> INTO <wa> INDEX <idx>.<itab>&#xff1a;代表内表 <wa>&#xff1a;代表工作区 <idx>&#xff1a;代表索引值 示例1 结果显示&#xff1a; 1.2 关键字查找 READ TABLE <…

Redis协议规范简介

Redis客户端使用为名为RESP&#xff08;Redis序列化协议&#xff09;的协议与Redis服务器进行通信。虽然该协议是专门为Redis设计的&#xff0c;但它也可以用于其他的CS软件项目的通信协议。 RESP可以序列化不同的数据类型&#xff0c;如整型&#xff0c;字符串&#xff0c;数…

【python】python海底捞门店营业数据分析与可视化(数据集+源码+论文)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

pyttsx3:Python文本到语音转换库的全面指南

目录 引言 一、pyttsx3 简介 二、安装 pyttsx3 三、基本用法 四、配置语音属性 五、支持的命令和功能 六、高级用法 结语 引言 在当今的软件开发中&#xff0c;提供语音交互功能已成为提升用户体验的一种重要方式。Python&#xff0c;作为一种广泛使用的编程语言&#x…

JavaSE基础总结复习之面向对象の知识总结

目录 Java语言的基础特点 面向对象 类和对象 类 类的构造 一&#xff0c;发现类 二&#xff0c;发现类的共有属性&#xff08;成员变量&#xff09; 三&#xff0c;定义类的成员方法&#xff08;行为&#xff0c;动词&#xff09; 四&#xff0c;使用类创建对象 对象…

vue3使用 JSX / TSX语法

一、什么是 JSX / TSX JSX / TSX 语法 JSX 是一种将XML语法嵌入到JavaScript中的语法。在 Vue3 中&#xff0c;我们可以使用JSX语法来编写组件的模板。使用JSX语法可以让我们更加灵活地定义组件的模板&#xff0c;并且可以让我们在编写组件时使用JavaScript的全部语言特性。 …

05-5.5.2 并查集

&#x1f44b; Hi, I’m Beast Cheng &#x1f440; I’m interested in photography, hiking, landscape… &#x1f331; I’m currently learning python, javascript, kotlin… &#x1f4eb; How to reach me --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以…

【面试干货】HashSet 和 TreeSet 的区别

【面试干货】HashSet 和 TreeSet 的区别 1、实现方式HashSetTreeSet 2、性能添加、删除和查找操作的时间复杂度HashSetTreeSet 3、元素唯一性4、迭代顺序HashSetTreeSet 5、使用场景HashSetTreeSet 6、示例代码 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不…

阅读笔记:明朝那些事儿妖孽横行的宫廷

明朝那些事儿第四部看完了&#xff0c;合上书本给我印象比较深刻的文臣要数王守仁&#xff0c;不愧为明朝的军事家&#xff0c;思想家&#xff0c;文学家&#xff0c;教育家&#xff0c;他经过多年的思索、磨难、追求&#xff0c;终于有一天&#xff0c;在穷乡僻壤&#xff0c;…

Linux的基本指令第二篇

1.cat - 查看文件 语法&#xff1a;cat [选项] [文件] 功能&#xff1a; 查看目标文件的内容 -b 对非空输出行编号 -n对输出的所有行编号 -s不输出多行空行 现有一个文件test.c cat -n test.c cat -b test.c cat -s test.c 创建一个新文件 加入源文件的内容 || …