您的位置:首页 > 编程语言 > C语言/C++

C++基础::string(三)

2016-02-26 18:38 363 查看
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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: