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 に答える