1

C ++でWebページの本文からinnerHTMLを取得しようとしていますが、これまでのところ:

// I get "Document" from a parameter when calling this code
BSTR bstrContent = NULL;
IHTMLElement *p = 0;
Document->get_body( &p );

if( p )
{
    p->get_innerHTML( &bstrContent );
    p->Release();
}

ここで、bstrContent を小文字の std::string または LPSTR に変換する必要があります。これを試しました。

LPSTR pagecontent = NULL;

int responseLength = (int)wcslen(bstrContent);
pagecontent = new CHAR[ responseLength + 1 ];
wcstombs( pagecontent, bstrContent, responseLength);

ただし、「pagecontent」には常に完全な innerHTML が含まれているわけではなく、最初のチャンクのみが含まれています。うまくいったとしても、簡単にすべて小文字にする方法がわかりません。std::string を使用して、「transform」+「tolower」を使用します。

では、どうすれば bstrContent を std::string に変換できますか?

4

2 に答える 2

0

std::transform は、開始ポインターと終了ポインターもあれば正常に機能します。シーケンス反復子として動作するものすべてで機能します (通常のポインターは修飾されます)。

于 2011-01-15T03:33:29.613 に答える
0

あなたの質問を完全に理解しているかどうかわかりません。get_innerHTML で不完全なボディが得られる理由はわかりませんが、BSTR を std::string に変換できます (Unicode をサポートする必要がないと仮定すると、その場合は std を使用する必要がありました::wstring とにかく) 次のページにある関数を使用します。

http://www.codeguru.com/forum/showthread.php?t=275978

ATL を使用している場合は、CA2W 変換ユーティリティもありますが、関連する場合は少なくとも UTF8 をサポートするため、リンクした関数の方が優れています。

それが役立つことを願って、

  • タクシリアン
于 2011-01-15T03:15:09.410 に答える