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

时间:2016-09-04 10:17:42

标签: c++ c++11

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

我有字符串: ----输入:“姓名:$$输入您的姓名2 $$” 我想在$$符号之间提取字符串,包括符号: ----输出:“$$输入你的名字2 $$”

请帮帮我。

2 个答案:

答案 0 :(得分:-1)

在这种情况下,

Regular Expression非常有用。

C ++ 11 regex库。

#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)*\$\$)__";raw string,以便使正则表达式更具可读性。

答案 1 :(得分:-1)

只需在字符串中搜索分隔符:

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);
}