包含在两个特定字符之间的c++子字符串

C++ substring contained between 2 specific characters

本文关键字:之间 字符 c++ 字符串 两个 包含      更新时间:2023-10-16

在c++中想要提取包含在特定字符之间的字符串中的所有子字符串,例如:

std::string str = "XPOINT:D#{MON 3};S#{1}"
std::vector<std:string> subsplit = my_needed_magic_function(str,"{}");
std::vector<int>::iterator it = subsplit.begin();
for(;it!=subsplit.end(),it++) std::cout<<*it<<endl;

这个调用的结果应该是:

MON 3
1

你可以试试Regex:

#include <iostream>
#include <iterator>
#include <string>
#include <regex>
int main()
{
    std::string s = "XPOINT:D#{MON 3};S#{1}.";
    std::regex word_regex(R"({(.*?)})");
    auto first = std::sregex_iterator(s.begin(), s.end(), word_regex),
         last  = std::sregex_iterator();;
    while (first != last)
        std::cout << first++->str() << ' ';
}

打印

{MON 3} {1}