C++基础::string(三)
2016-02-26 18:38
363 查看
C++基础::string
C++基础::string(二)
在单个字符的查找上,find 和 find_\first_of()是等价的
推论——文件名非法的判断:
没有句点
句点在文件名的结尾处
substr 和 find_** 等成员函数结合,实现颇为强大的功能:
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++向上向下取整
- JNI基础java、C++交互
- html+c++ 以html形式记录笔记
- C++参数传递,数组引用传递,保护数组退化为指针
- VC++ 控制台不自动退出
- HDU 2602 Bone Collector(dp)
- C++基础
- YTU 2444: C++习题 对象转换
- C语言指针剖析(1)---基本数据类型
- 1063. Set Similarity (25)
- 正则表达式总结
- C++文件
- C++标准库及其保留字(关键字)——附:C++标准文档
- 从.txt文件中批量读取图片
- C语言预处理
- 易出错的C语言题目之一:宏定义与预处理
- C++函数调用约定
- 从3.5开始android项目的编译C++的选项默认是未选取的
- C++内存的理解
- 九度-题目1185--特殊排序