c++如何提取两个相同符号之间的子字符串

C++ How to Extract Substring between two same symbols

本文关键字:符号 之间 字符串 何提取 提取 c++ 两个      更新时间:2023-10-16

我是c++编程新手。我需要一些帮助,

我有字符串:----输入:"Name: $$ Enter Your Name2 $$"我想提取$$符号之间的字符串,包括符号:----输出:"$$ Enter Your Name2 $$"

请帮帮我。

正则表达式在这种情况下非常有用。

c++ 11有正则表达式库。

#include <string>
#include <regex>
std::string parse_string(const std::string& str) {
  static const std::string REGEX_STR = R"__($$(w|W)*$$)__";
  std::regex regex(REGEX_STR);
  std::smatch regex_iterator;
  if (std::regex_search(str, regex_iterator, regex)) {
    return regex_iterator.str();
  }
  return std::string("");
}

代码可以改进,但它应该是一个好的起点。具体情况需要处理,例如:字符串中有更多的$$*$$,等等…


注意:
R"__($$(w|W)*$$)__";是一个原始字符串,以使regex更具可读性。

在字符串中搜索分隔符:

std::string parse_string(const std::string& str, const std::string& delim) {
    auto start = str.find(delim);
    if (start == std::string::npos)
        return "";
    auto end = str.find(delim, start + delim.size());
    if (end == std::string::npos)
        return str.substr(start);
    else
        return str.substr(start, end - start + delim.size);
}