#include<string>下的str.find()函数

本文介绍了C++中字符串查找的方法,包括使用str.find()和str.rfind()函数来定位子字符串的位置。通过示例展示了如何查找单个子字符串及其所有出现的位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

str.find(ss)//返回字符串ss在str中的位置

str.find(ss,num) //在str[num]~str[n-1]范围内查找并返回字符串ss在str的位置

str.rfind(ss,num)////在str[0]~str[num]范围内查找并返回字符串ss在str的位置(reverse)

例子:

#include <iostream>
using namespace std;
int main()
{
    //string str("abcabcabcd");
    string str="abcacbabcd";
    string::size_type pos=0;
    cout << str.find("a",2) << endl;
    cout << str.rfind("c",5) << endl;//?如果出现多个c,好像返回最后一个
    cout << str.find("bc") << endl;
    cout << str.find("za") << endl;  // 找不到,返回string::npos
    return 0;
}

结果:

 

 找出子字符串所有的出现位置

例子:

#include <iostream>
using namespace std;
int main()
{
    //string str("abcabcabcd");
    string str="abcabcbabcd";
    string::size_type pos=0;  //注意
    while((pos=str.find("abc",pos))!=std::string::npos)
    {
        cout<<pos<<endl;
        pos++;
    }
    return 0;
}

结果:

 

整理的很多的一篇文章:https://www.renfei.org/blog/introduction-to-cpp-string.html 

`#include <string>` 和 `#include <map>` 是 C++ 标准库中的两个头文件声明,分别引入了字符串处理功能和关联容器(映射表)的功能。 ### `<string>` 这个头文件提供了对标准字符串类的支持。通过包含此头文件,可以使用 `std::string` 类型来进行高效的字符串操作。相比于传统的字符数组 (`char[]`),`std::string` 提供了许多内置函数用于简化字符串管理、拼接、查找等任务。例如: ```cpp #include <iostream> #include <string> int main() { std::string str = "Hello, world!"; std::cout << str.length(); // 输出字符串长度 } ``` 常用方法包括但不限于: - `.length()` 或 `.size()` 获取字符串长度; - `.substr(start, length)` 截取部分字符串; - `.find(sub_str)` 查找子串的位置; --- ### `<map>` 该头文件引入了一个名为 `std::map` 的关联式容器模板类。它存储的是键值对 (key-value),并且内部会自动按照键排序。对于需要快速查询数据结构的应用场景非常有用,比如建立从名称到电话号码之间的对应关系等等。 下面是一个简单的例子展示如何创建并访问 map 中的内容: ```cpp #include <iostream> #include <map> int main(){ std::map<std::string,int> ageMap; // 创建一个 string->int 映射 ageMap["Alice"] = 25; ageMap["Bob"] = 30; if(ageMap.find("Alice") != ageMap.end()) std::cout << "Age of Alice is "<<ageMap["Alice"]; } ``` 这里需要注意几点事项: - 插入元素时如果指定的 key 已经存在,则不会插入新项而是更新已有记录。 - 访问不存在 keys 将导致默认构造 value 被添加进地图里(仅限于非 const 地图),所以在读之前最好先检查是否存在目标 key。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值