0

我从 HTML 请求中得到了一个长字符串。我需要在其中找到以下子字符串:

<b><i>

但是,当我尝试搜索时,它会给我错误的结果。

如果我用不包含 < 或 > 的东西替换字符串,它可以完美地工作。

相关代码:(未复制,可能有一些拼写错误,但可以在没有特殊字符的情况下使用)

std::string readBuffer; //longlongstring
std::string starttag;
std::string endtag;

size_t sstart;
size_t send;

//...................

sstart=readBuffer.find(starttag);
send=redBuffer.find(endtag);

correction=readBuffer.substr(sstart,send-sstart);

//....................

所以,是的,如果有人碰巧知道解决这个问题的方法,我会非常感激:) 提前致谢

4

1 回答 1

3

这按预期工作:

#include <cassert>
#include <string> 

int main(int,char**)
{
  std::string data = "...<b><i>Berlin</b></i>";
  size_t sstart = data.find("<b><i>")+6;
  size_t send = data.find("</b></i>");
  std::string correction = data.substr(sstart,send-sstart);
  assert(correction=="Berlin");
  return 0;
}

如果您创建了一个像这样的小型完整示例,但是您遇到了失败,那么确定问题所在会变得更加容易。

于 2013-03-10T15:46:26.483 回答