C++基础::string

C++基础::string(二)

  • 在单个字符的查找上,find 和 find_\first_of()是等价的

1. basename 和扩展名(extension)的获得

注意,一个字符串形式的文件名(filename),自然包含 basename 和扩展名(extension),需要注意的是,扩展名是最后一个.(句点)后的子串,而非第一个,最后一个自然对应于字符串类的find_last_of

std::string filename = "hello.txt.doc", basename, extname;
std::string::size_type idx = filename.find_last_of(".");
if (idx != std::string::npos)
{basename = filename.substr(0, idx);extname = filename.substr(idx+1, filename.size()-idx-1);
}

2. 文件名合法性的判断

文件名以句点.结尾是不允许的;
推论——文件名非法的判断:

  • 没有句点

  • 句点在文件名的结尾处

std::string::size_type idx = filename.find_last_of('.');
if (idx != std::string::npos && idx != filename.size()-1)...

3. substr:获得子串

注意该接口的两个参数不表,起始位置和结束,而是开始下标和子串的长度;

str.substr(s);              // 表示开始到末尾 str[s:],等价于
str.substr(s, n-s);// str.substr(1) ⇒ 删除第一个字母后的其他字符串
str.substr(s, t-s+1);// 表示 str[s:t] 之间的,包含两端点

substr 和 find_** 等成员函数结合,实现颇为强大的功能:

string str = "doqurfhw1780292fhie", nums = "1234567890";
int s = str.find_first_of(nums);
int t = str.find_last_of(nums);
cout << str.substr(s, t-s+1) << endl;// 1780292

4. +:字符串拼接

str1 + str2;

C++基础::string(三)相关推荐

  1. Servlet基础(三) Servlet的多线程同步问题

    Servlet基础(三) Servlet的多线程同步问题 Servlet/JSP技术和ASP.PHP等相比,由于其多线程运行而具有很高的执行效率. 由于Servlet/JSP默认是以多线程模式执行的, ...

  2. C#基础第三天-作业-集合-冒泡排序-模拟名片

    1.名片:用两种集合(ArrayList/List<>)去输出余下信息. 身份证号码,电话号码,性别,姓名,身高,年龄,体重. 需求:根据 姓名 去查询某一行数据.如果集合中不存在提示(& ...

  3. Java校招笔试题-Java基础部分(三)

    导语   Java 面试题集2021版 Java基础部分三 26.说说has a 与is a的区别 27.一个房间里有一把椅子,椅子有四条腿,房子和椅子是什么关系,椅子和椅子腿是什么关系? 28.什么 ...

  4. C++基础::string(二)

    C++基础::string 构造 接受char*作为单参构造,且该单参未被explicit修饰(赋值即构造): char* s = "hello";// char s[] = &q ...

  5. 数字化方法基础(三)_导入本地模型

    数字化方法基础(三)_导入本地模型 Chapter 6 导入本地模型 如何创建一个列表 如何读取本地模型 全部教程链接: https://blog.csdn.net/weixin_44543463/a ...

  6. JAVASE基础模块三十四( 菜鸡版简单登录验证模块系统IO流文件写入)

    JAVASE基础模块三十四( 菜鸡版简单登录验证模块系统IO流文件写入) 开发流程:需求文档 接口文档 效果图 开发环境统一:JDK1.8 IDEA win10 GIT SSM SSH SpringB ...

  7. 语法基础(三. 类,属性,方法,方法重载,方法重写,构造方法,访问修饰符)

    语法基础(三. 类,属性,方法,方法重载,方法重写,构造方法,访问修饰符) (如有错误,欢迎指正,感谢!) 类 类是面向对象的程序设计中的概念,实现信息的封装 概念: 类就是拥有相等行为和相同的属性的 ...

  8. Java实习生常规技术面试题每日十题Java基础(三)

    目录 1.是否可以从一个static方法内部发出对非static方法的调用? 2.Integer与int的区别? 3.Overload和Override的区别.参数列表相同,返回值不同的方法,是否是重 ...

  9. #Linux基础(三)

    #Linux基础(三) ###vi/vim的特点 vi/vim是一种纯文本编辑工具,它不像world可以排版,可以调整字体大小,可以改变字体颜色. vi/vim正是一个文本编辑工具,只能对文本的内容进 ...

最新文章

  1. 人工智能:AI 芯片快速起航
  2. 简单型的弱电机房工程汇报方案
  3. 【行业】点餐App未来必须面对的三大难题
  4. [导入]在ASP.NET中跨页面实现多选
  5. 2018,腾讯110,感谢有你
  6. 面试官 | JVM 为什么使用元空间替换了永久代?
  7. java二叉树原理_史上最全二叉树遍历详解(Java实现,原理相同)
  8. Docker系列(二):Docker安装
  9. unittest 简单使用
  10. 问道linux一键端,问道手游源码打包一键端搭建_附教程
  11. 基于单片机的空气质量(PM2.5)监测系统设计(#0423)
  12. 重启计算机可以使用什么组合键,win10系统重启电脑的快捷键是什么呢?
  13. 超有趣的Python实战:将图片转成像素风~
  14. windows bat系列9:for处理案例三 单行按指定分隔符分割
  15. 国内外有哪些比较好的电子技术的网站类似github?
  16. PMP证书含金量再次提升,纳入北京工作居住证办理范围
  17. Hive On Spark
  18. 计算机丢失文件无法打开ae,ae工程文件打开提示素材丢失该怎么办?
  19. 双系统下Deepin的安装和卸载(Deepin20.2+Win10)
  20. 航城街道工商联(商会)领导一行莅临联诚发参观考察

热门文章

  1. flume1.7 TailDirSource断点续传与文件更名后数据重复采集的bug修复
  2. mysql导出所有binlog_mysql导入、导出、查看binlog命令
  3. 南宁二中三中高考2021成绩查询,2020年南宁二中三中录取总成绩不低于A
  4. 分布式系统唯一ID设计
  5. [转帖]九句英语闯天下
  6. 关于nginx unit服务非正常关闭后,无法重新启动问题的处理
  7. 【AtCoder】ARC090
  8. Java并发(一)——线程安全的容器(上)
  9. 未来Linux系统将是运维行业必备的技能之一
  10. Spring Boot 初步小结