首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

string string:在一个字符串中获取多个in,并将它们返回给vector

答案: 在C++中,我们可以使用string类和vector类来实现在一个字符串中获取多个in,并将它们返回给vector的功能。

首先,我们需要使用string类的find函数来查找字符串中的子串。find函数会返回子串在字符串中的位置,如果找不到则返回string::npos。

然后,我们可以使用一个循环来重复查找字符串中的子串。每次找到子串后,我们可以将其位置保存到一个vector中。

下面是一个示例代码:

代码语言:txt
复制
#include <iostream>
#include <string>
#include <vector>

std::vector<size_t> findOccurrences(const std::string& str, const std::string& subStr) {
    std::vector<size_t> occurrences;
    size_t pos = 0;
    
    while ((pos = str.find(subStr, pos)) != std::string::npos) {
        occurrences.push_back(pos);
        pos += subStr.length();
    }
    
    return occurrences;
}

int main() {
    std::string str = "This is a string containing multiple 'in' occurrences";
    std::string subStr = "in";
    
    std::vector<size_t> occurrences = findOccurrences(str, subStr);
    
    for (size_t i = 0; i < occurrences.size(); ++i) {
        std::cout << "Occurrence " << i + 1 << " found at position " << occurrences[i] << std::endl;
    }
    
    return 0;
}

在上面的代码中,我们定义了一个名为findOccurrences的函数,它接受两个参数:一个是要搜索的字符串str,另一个是要查找的子串subStr。函数返回一个vector,其中包含了所有子串在字符串中的位置。

在主函数中,我们定义了一个示例字符串str和要查找的子串subStr。然后,我们调用findOccurrences函数来获取所有子串的位置,并将结果保存到occurrences向量中。最后,我们使用循环打印出每个子串在字符串中的位置。

这个功能在实际开发中非常常见,例如在文本处理、日志分析、字符串匹配等场景中都会用到。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云CVM(云服务器):https://cloud.tencent.com/product/cvm
  • 腾讯云COS(对象存储):https://cloud.tencent.com/product/cos
  • 腾讯云VPC(私有网络):https://cloud.tencent.com/product/vpc
  • 腾讯云CDN(内容分发网络):https://cloud.tencent.com/product/cdn
  • 腾讯云SCF(云函数):https://cloud.tencent.com/product/scf
  • 腾讯云CKafka(消息队列 CKafka):https://cloud.tencent.com/product/ckafka
  • 腾讯云CDB(云数据库 MySQL):https://cloud.tencent.com/product/cdb
  • 腾讯云SSL证书:https://cloud.tencent.com/product/ssl
  • 腾讯云DDoS防护:https://cloud.tencent.com/product/ddos
  • 腾讯云WAF(Web应用防火墙):https://cloud.tencent.com/product/waf
  • 腾讯云视频处理:https://cloud.tencent.com/product/vod
  • 腾讯云人脸识别:https://cloud.tencent.com/product/faceid
  • 腾讯云物联网通信:https://cloud.tencent.com/product/iotexplorer
  • 腾讯云区块链服务:https://cloud.tencent.com/product/tbaas
  • 腾讯云游戏多媒体引擎:https://cloud.tencent.com/product/gme
  • 腾讯云元宇宙:https://cloud.tencent.com/product/tencent-realtime-rendering
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

11.1 C++ STL 应用字典与列表

接着,程序添加多个字符串类型的键值对到map容器,其中包括使用数组索引语法以及使用insert()函数添加键值对。...这段代码实现了一个函数get_vect_value_list(),可以查找两个vector容器相同的元素,并将这些元素放入一个新的vector容器返回。...主函数,定义两个vector容器VectA和VectB,并使用get_vect_value_list()函数获取两个vector相同的元素,并将其赋值item。...对于嵌套多个字典的实现,代码定义了一个vector容器vect,该容器的每个元素都是一个map容器。map容器一个key对应一个vector容器。...此函数也接受一个vector容器,并返回其中随机抽取的一个元素。 main()函数,将标准库和boost版本的随机函数各循环执行了10次,并在每轮循环中输出从vector容器随机取出的元素。

23120

11.1 C++ STL 应用字典与列表

接着,程序添加多个字符串类型的键值对到map容器,其中包括使用数组索引语法以及使用insert()函数添加键值对。...这段代码实现了一个函数get_vect_value_list(),可以查找两个vector容器相同的元素,并将这些元素放入一个新的vector容器返回。...主函数,定义两个vector容器VectA和VectB,并使用get_vect_value_list()函数获取两个vector相同的元素,并将其赋值item。...对于嵌套多个字典的实现,代码定义了一个vector容器vect,该容器的每个元素都是一个map容器。map容器一个key对应一个vector容器。...此函数也接受一个vector容器,并返回其中随机抽取的一个元素。 main()函数,将标准库和boost版本的随机函数各循环执行了10次,并在每轮循环中输出从vector容器随机取出的元素。

41640

机器人CPP编程基础-04输入Input

a cin >> a; // 从控制台获取输入,并将输入的值存储变量a cout << "Variable name a = " << a << endl; // 输出变量a...读取<em>字符串</em>: cpp复制代码 <em>string</em> str; cin >> str; 这将从标准输入流<em>中</em>读取一行<em>字符串</em>,<em>并将</em>其存储<em>在</em>变量str<em>中</em>。...读取<em>多个</em>相同类型的数据: cpp复制代码 int a, b, c; cin >> a >> b >> c; 这将从标准输入流<em>中</em>连续读取三个整数,<em>并将</em><em>它们</em>分别存储<em>在</em>变量a、b和c<em>中</em>。...读取一行数据: cpp复制代码 <em>string</em> line; getline(cin, line); 这将从标准输入流<em>中</em>读取一行<em>字符串</em>,<em>并将</em>其存储<em>在</em>变量line<em>中</em>。...以下是<em>在</em>Arduino<em>中</em>实现输入的一些基本方法: 使用Serial.read():这个函数从串口读取字节,并<em>返回</em><em>它们</em>。如果没有可读的字节,该函数将<em>返回</em>-1。

20920

Rust学习笔记之集合

---- vector: 用来储存一系列的值 Vec,也被称为 vectorvector 允许我们一个「单独的数据结构」中储存多个值,「所有值在内存彼此相邻排列」。...这个规则适用于如下代码,当我们获取vector 的第一个元素的「不可变引用」并尝试 vector 末尾增加一个元素的时候,这是行不通的: let mut v = vec!...为了修改可变引用所指向的值,使用 += 运算符之前必须使用「解引用运算符」(*)获取 i 的值。 ---- 使用枚举来储存多种类型 提到 vector 只能储存相同类型的值。...---- 新建字符串 很多 Vec 可用的操作 String 同样可用,从 new 函数创建字符串开始。...push 方法被定义为获取一个「单独的字符作为参数」,并附加到 String

63020

Scala语言入门:初学者的基础语法指南

由于包对象与包同名且位于同一包,因此可以直接使用它们。 特质 Scala,类是单继承的,但是特质(trait)可以多继承。 这意味着,一个类只能继承一个父类,但可以继承多个特质。...然后,我们定义了一个自定义运算符 +,它接受另一个 Vector2D 对象作为参数,并返回一个新的 Vector2D 对象。方法体内,我们实现了向量的加法操作。...主程序,我们创建了两个 Vector2D 对象 v1 和 v2。然后,我们使用自定义的运算符 + 来执行向量的加法,并将结果赋值 sum。...主程序,我们将一个 Int 类型的值赋值一个 String 类型的变量。由于类型不匹配,编译器会尝试寻找一个隐式转换函数来将 Int 类型的值转换为 String 类型的值。...它可以接受多种不同类型的参数,并将它们转换为字符串进行输出。

27920

Scala语言入门:初学者的基础语法指南

由于包对象与包同名且位于同一包,因此可以直接使用它们。 特质 Scala,类是单继承的,但是特质(trait)可以多继承。 这意味着,一个类只能继承一个父类,但可以继承多个特质。...然后,我们定义了一个自定义运算符 +,它接受另一个 Vector2D 对象作为参数,并返回一个新的 Vector2D 对象。方法体内,我们实现了向量的加法操作。...主程序,我们创建了两个 Vector2D 对象 v1 和 v2。然后,我们使用自定义的运算符 + 来执行向量的加法,并将结果赋值 sum。...主程序,我们将一个 Int 类型的值赋值一个 String 类型的变量。由于类型不匹配,编译器会尝试寻找一个隐式转换函数来将 Int 类型的值转换为 String 类型的值。...它可以接受多种不同类型的参数,并将它们转换为字符串进行输出。

30220

Scala语言入门:初学者的基础语法指南

由于包对象与包同名且位于同一包,因此可以直接使用它们。 特质 Scala,类是单继承的,但是特质(trait)可以多继承。 这意味着,一个类只能继承一个父类,但可以继承多个特质。...然后,我们定义了一个自定义运算符 +,它接受另一个 Vector2D 对象作为参数,并返回一个新的 Vector2D 对象。方法体内,我们实现了向量的加法操作。...主程序,我们创建了两个 Vector2D 对象 v1 和 v2。然后,我们使用自定义的运算符 + 来执行向量的加法,并将结果赋值 sum。...主程序,我们将一个 Int 类型的值赋值一个 String 类型的变量。由于类型不匹配,编译器会尝试寻找一个隐式转换函数来将 Int 类型的值转换为 String 类型的值。...它可以接受多种不同类型的参数,并将它们转换为字符串进行输出。

51810

Scala语言入门:初学者的基础语法指南

由于包对象与包同名且位于同一包,因此可以直接使用它们。特质Scala,类是单继承的,但是特质(trait)可以多继承。这意味着,一个类只能继承一个父类,但可以继承多个特质。...然后,我们定义了一个自定义运算符 +,它接受另一个 Vector2D 对象作为参数,并返回一个新的 Vector2D 对象。方法体内,我们实现了向量的加法操作。...主程序,我们创建了两个 Vector2D 对象 v1 和 v2。然后,我们使用自定义的运算符 + 来执行向量的加法,并将结果赋值 sum。...主程序,我们将一个 Int 类型的值赋值一个 String 类型的变量。由于类型不匹配,编译器会尝试寻找一个隐式转换函数来将 Int 类型的值转换为 String 类型的值。...它可以接受多种不同类型的参数,并将它们转换为字符串进行输出。下面是一些常见的使用 println 函数进行输出的方式:输出字符串:直接将字符串作为参数传入 println 函数,它会将字符串原样输出。

29320

C++从入门到精通——string

** resize 将有效字符的个数该成n个,多出的空间用字符c填充 C++string类有两个成员函数size()和length(),它们都用于返回字符串的长度,但它们之间没有区别,可以互换使用...这是因为C++标准库string类是基于字符数组实现的,它们返回的是存储string对象的字符个数。因此,C++,size()和length()函数可以互相替代使用,没有区别。...每一次循环中,我们通过*it操作符获取迭代器指向的字符,并将其打印出来。然后,迭代器it向前移动到下一个位置,直到达到字符串的末尾为止。...c append 字符串后追加一个字符串 operator+= 字符串后追加字符串str c_str 返回C格式字符串 find + npos 从字符串pos位置开始往后找字符c,返回该字符字符串的位置...erase C++的erase是一个字符串或容器的成员函数,用于删除容器一个多个元素。具体用法如下: 字符串的erase函数用于删除字符串一个多个字符。

16510

【c++】set和map的使用

如果给定值set不存在,它将返回指向下一个更大的元素的迭代器;如果给定值大于set的任何元素,它将返回指向set末尾的迭代器。...这种方式实际上利用了std::pair的构造函数,它能接收两个参数并将它们转换为一个pair对象。...2]; // 返回字符串 在这个示例,如果m不存在键2的元素,那么会创建一个新的std::string对象(其值为默认构造的空字符串),并将其与键2关联。...将 std::map 的元素复制到一个 vector ,使得每个映射转变成一个 pair 对象,并存储于 vector v1 使用 std::sort 对这个 vector...这会使频率最高的单词排在前面,并且频率相同的情况下字典序小的单词排在前面 接下来,从排序后的 vector 中提取前 k 个单词,并将它们放入新的 vector v2 返回包含前 k 个最频繁单词的

4400

大模型部署框架 FastLLM 简要解析

并且FastLLM对批量推理进行了支持,也就是说如果有多个用户的请求进来,不管是否它们请求的长度是否相同都可以FastLLM组成一个batch来批量推理节约资源。 0x2....具体来说,它包括以下几个步骤: 打开一个二进制文件,准备写入模型的数据。 写入一个版本号,用于后续的兼容性检查。 获取模型的配置信息,并将它们写入文件。...如果分词器是一个句子片段模型(sentence piece model),那么还会写入一些额外的信息。 获取模型的权重(包含在模型的状态字典),并将它们写入文件。...# 这段代码的主要功能是从预训练模型库中加载一个模型和对应的分词器, # 并将它们导出为一个特定的文件格式(在这个例子是 .flm 格式)。...Data 对象,并将其复制 inputIds。

70620

2023-05-27:给你一个只包含小写英文字母的字符串 s 。 每一次 操作 ,你可以选择 s 两个 相邻 的字符,并将它们交换。 请你返回将 s 变成回文

2023-05-27:给你一个只包含小写英文字母的字符串 s 。 每一次 操作 ,你可以选择 s 两个 相邻 的字符,并将它们交换。 请你返回将 s 变成回文串的 最少操作次数 。...2.定义函数 createIndexTree(size int) *IndexTree,用于创建一个大小为 size 的树状数组并初始化,返回该数组的指针。...首先遍历字符串,将每个字符第一次出现的下标加入到对应字符的索引列表。...然后定义一个整型切片 arr 用于记录每个字符与其对称位置之间的距离,以及一个 IndexTree 类型的变量 it 用于记录每个字符左半部分的逆序对数量。...8. main 函数定义字符串 s = "letelt",并调用 minMovesToMakePalindrome 函数输出结果。

34800

19.9 Boost Asio 同步字典传输

这里所代指的字典是Python的样子,本节内容我们将通过使用Boost自带的Tokenizer分词器实现对特定字符串的切割功能,使用Boost Tokenizer,可以通过构建一个分隔符或正则表达式的实例来初始化...然后,可以使用该实例对输入字符串进行划分。tokenizer将在输入字符串寻找匹配输入模式的标记,并将其拆分为单独的字符串。...首先我们先来看服务端是如何实现的,服务端我们接收客户端传递过来的GetProcess,lyshark.exe字符串,然后通过使用tokenizer分词器提取出其内部的lyshark.exe字符串,接着调用...[1].c_str())); // 得到结果返回客户端 socket.write_some(asio::buffer(ref_string), ignored_error...,服务端处理后返回处理后的字典格式字符串,如下图所示;

17630

19.9 Boost Asio 同步字典传输

这里所代指的字典是Python的样子,本节内容我们将通过使用Boost自带的Tokenizer分词器实现对特定字符串的切割功能,使用Boost Tokenizer,可以通过构建一个分隔符或正则表达式的实例来初始化...然后,可以使用该实例对输入字符串进行划分。tokenizer将在输入字符串寻找匹配输入模式的标记,并将其拆分为单独的字符串。...首先我们先来看服务端是如何实现的,服务端我们接收客户端传递过来的GetProcess,lyshark.exe字符串,然后通过使用tokenizer分词器提取出其内部的lyshark.exe字符串,接着调用...vector容器 std::vector vecSegTag; for (CustonTokenizer::iterator beg = tok.begin....c_str())); // 得到结果返回客户端 socket.write_some(asio::buffer(ref_string), ignored_error);

14630

C++惯用法之消除垃圾收集器-资源获取即初始化方法(RAII)

C99之前,自动分配的变量需要在编译时知道它们的大小。这意味着任何字符串、列表、映射以及从这些派生的任何结构都必须存在于堆的动态内存。...在这种情况下,它们返回一个空指针,其访问是未定义的行为;最好的情况下,你的程序会崩溃。最坏的情况下,你的程序看起来会工作一段时间,崩溃前处理垃圾数据。...现实生活,你不应该直接写字节数,而应该使用sizeof函数。类似地,我们将char *数组精确地分配给我们需要的字符串大小的两倍(比字符串长度多一倍,以说明空终止),这是一个相当昂贵的操作。...vector被填满、返回和调用。然而,作为关心性能的高效程序员,这方面的一些问题困扰着我们:return语句中,由于使用了值语义,vector销毁之前不久就被复制到一个vector。...这种技术包括将指针分配到堆上分配的对象,并将其放在句柄/管理器对象。后者具有一个析构函数,将负责销毁该对象。

85820

工作两年了,还只会用sort进行排序?

● 如果你有一个vectorstring、deque或数组,你需要鉴别出第n个元素或你需要鉴别出最前的n个元素, 而不用知道它们的顺序,nth_element是你应该注意和调用的。...remove移动指定区间中的元素直到所有“不删除的”元素区间的开头(相对位置和原来它们的一样)。 它返回一个指向最后一个的下一个“不删除的”元素的迭代器。返回值是区间的“新逻辑终点”。...,它们的内存和其他资源泄漏了 //你无法避免在那样的容器上使用remove,排除这个问题一种方法是应用erase-remove惯用法之前先删除 指针并设置它们为空,然后除去容器的所有空指针 //见...,就可以很容易决定哪个字符串, 如果有的话,一个前面。...也是; 3,2 如果,一个字符不同的位置,从第一个字符串来的字符先于对应的来自第二个字符串的字符,第一个字符串就先于第二个 3,3 就像strcmp,lexicographical_compare认为两个相等值的区间是相等的

90220

算法修炼之筑基篇——筑基一层后期(解决KMP算法,KMP算法模板)

KMP算法的部分匹配表(next数组)是一个整数数组,用于存储每个位置之前最长相同前缀后缀的长度。构建next数组时,我们会逐步计算每个位置的值,并将其存储vector。...} } return count; // 返回S1S2出现的次数 } 代码的执行流程如下: 获取字符串S1和S2的长度。...使用 getline(cin, s1) 从输入读取一行字符串并将其存储变量 s1 。 使用 getline(cin, s2) 从输入读取一行字符串并将其存储变量 s2 。...调用 countOccurrences(s1, s2) 函数,计算字符串 s1 字符串 s2 中出现的次数,并将结果存储变量 result 。...返回 0,表示程序正常结束。 整个代码的作用是读取两行字符串作为输入,然后计算第一行字符串第二行字符串中出现的次数,并将结果输出。

8410

C++ Primer Plus习题及答案-第十六章

易于使用方面,指出string对象至少两个优于C-风格字符串的地方。...string对象有自己的内存管理功能那个,不需要担心字符串超出存储容量的问题,而且可以将一个string对象赋值另外一个string对象。 3....一个vector对象可以赋值另外一个vector对象;vector可以自己管理自己的内存,自动调整长度;vector可以使用at()方法,可以自动检查边界。 10....回文指的是顺读和逆读都一样的字符串。例如,“tot”和“otto”都是简短的回文。编写一个程序,让用户输入字符串并将字符串引用传递给一个bool函数。...请查看附录F字符串方法列表,以简化这项任务。 根据回文的定义我们很容易想到:将一个字符串翻转然后对比翻转后的字符串是否与原字符串相同,来判断该字符串是否为回文字符串

94620

opencl C++接口: 关于CL_KERNEL_FUNCTION_NAME的一个

类型的map表(kernel name为key),以后程序需要调用的时候,就通过kernel name来获取指定的cl::Kernel对象。...clCreateKernelsInProgram函数,可以返回cl::Program中所有的cl::Kernel对象,当一个cl::Program中有多个kernel函数的时候,用它可以一次性得到所有的...也就是说clGetKernelInfo取出来的kernel name字符串比original_name 多了一个结尾’\0’… 解决办法 找到原因了,解决问题办法也就有了: 执行map.insert...结论 cl::Kernel::getInfo()获取的std::string对象不是一个正常的std:string,需要改造将结尾处多余的’\0’去掉,...其实不仅获取kernel name有这个坑,而是所有clgetXXXInfo函数获取字符串类型的数据,都有这个问题。

73110
领券