我从HTML请求中获得了一个长字符串。我需要在其中找到以下子字符串:
<b><i>
然而,当我试图搜索它时,我得到了错误的结果。
如果我用一些东西替换字符串,不包含&lt;或者&gt;它完美无缺。
相关代码: (没有复制,可能有一些拼写错误,但没有特殊字符的工作)
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);
//....................
所以是的,如果有人碰巧知道解决这个问题的方法,我会非常感激:) 提前致谢
答案 0 :(得分: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;
}
如果您创建一个这样的小型完整示例,但是如果您遇到故障,则可以更轻松地确定问题所在。