尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

C++ STL学习之string(一)

C++ STL学习之string(一)
📅 发布时间:2026/7/24 19:37:49

默认成员函数之构造函数

void test_string1() { string s1; // 构造函数 string s2("hello"); // 带参构造 string s3("hello", 2); // 只拷贝前两个字符 string s4(s2); // 拷贝构造 string s5(s2, 1, 2); // 从第1个字符开始,拷贝两个字符 string s6 = s2; // 拷贝构造,在赋值过程中调用了拷贝构造,s6 在定义时用 s2 初始化,调用拷贝构造 string s7; s7 = s2; // s7 先定义(默认构造),再赋值,调用的是拷贝赋值运算符 operator= cout << s1 << endl; cout << s2 << endl; cout << s3 << endl; cout << s4 << endl; cout << s5 << endl; }

输出

string的遍历方法

1、for循环遍历

void test_string2() { string s1("hello"); s1 += " "; s1 += "world"; for (size_t i = 0; i < s1.size(); ++i) { cout << s1[i] << " "; } cout << endl; }

2、迭代器遍历

void test_string2() { string s1("hello"); s1 += " "; s1 += "world"; // 迭代器 string::iterator it = s1.begin(); while (it != s1.end()) { cout << *it << " "; ++it; } cout << endl; }

3、范围for遍历(C++11)

void test_string2() { string s1("hello"); s1 += " "; s1 += "world"; // 范围for c++11 for (auto ch : s1) { cout << ch << " "; } cout << endl; }

4、反向迭代器,反向遍历

void test_string3() { string s1("hello world"); string::reverse_iterator rit = s1.rbegin(); while (rit != s1.rend()) { cout << *rit << " "; ++rit; } cout << endl; }

输出结果为:d l r o w o l l e h

string转换成整数类型

int string2num(const string& nums) { int val = 0; string::const_iterator vit = nums.begin(); while (vit != nums.end()) { val *= 10; val += (*vit - '0'); ++vit; } return val; }

上述代码中使用了const迭代器,只能读,不能写,*vit的值不能再改变

string的插入删除

void test_string4() { string s1; s1.push_back('x'); // 尾插,在尾部插入一个字符,输出:x s1.append("11111"); // 尾部插入字符串,输出:x11111 s1 += "yyy"; // 尾部插入字符串,输出:x11111yyy string s; s += '1'; s += "3456"; cout << s << endl; // 输出:13456 s.insert(s.begin(), '0'); // 头插,在1之前插入0 cout << s << endl; // 输出:013456 s.insert(2, "2"); // 在2的位置插入2 cout << s << endl; // 输出:0123456 s.erase(2, 10); // 从第2个位置开始删除 cout << s << endl; // 输出:01 }

string的查找find()函数用法

查找文件后缀名

void test_string5() { string s1("string.cpp"); string s2("string.c"); string s3("string.txt"); size_t pos1 = s1.find('.'); if (pos1 != string::npos) { cout << s1.substr(pos1) << endl; } size_t pos2 = s2.find('.'); if (pos2 != string::npos) { cout << s2.substr(pos2) << endl; } size_t pos3 = s3.find('.'); if (pos3 != string::npos) { cout << s3.substr(pos3) << endl; } }

string中getline()的用法

string s;
cin >> s; 遇到空格或者换行就回结束
而getline(cing, s) 则只会遇到换行才结束

相关新闻

  • Chrome全屏截图终极解决方案:一键保存完整网页的免费插件
  • HarmonyOS开发实战:小分享-列表性能优化——组件复用与异步渲染
  • 【正则生成黄金标准】:IEEE最新白皮书认证的5大评估维度,92%开发者从未用过!

最新新闻

  • 若依项目Linux生产环境治理:文件系统权限配置实战
  • 2026.7.23:安装Windows下的mingw工具
  • 界面控件DevExpress ASP.NET Spreadsheet组件 - 轻松集成电子表格功能!(一)
  • 2026 长春管道疏通口碑 TOP5 深度测评|正规疏通公司哪家好?资质_价格_上门速度全对比 - 园子一号
  • 计算机毕业设计之天津铭嘉宠物公司在线售卖系统
  • 《派出你的AI同事:WorkBuddy案例实战》007:多语言翻译与本地化

日新闻

  • 武汉卡地亚LOVE钻戒与钻石项链回收变现攻略|多家门店行情参考 - 大牌深度测评
  • 2026年无锡地区健康管理如何考量?四家机构业务体系概览
  • 2026图片去水印软件哪个好用 手机电脑免费工具盘点 - 免费软件工具方法教程

周新闻

  • SaaS软件行业GEO实践:AI搜索时代的品牌可见性与获客新路径
  • 什么是PCTFE?医药高端包装的“防潮王牌“材料
  • 【JVM调优实战】16-可视化利器-JConsole-VisualVM-JMC

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号