C++基础::string(三)

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;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口纳什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值