簡體   English   中英

如何將IHTMLDocument2-> get_body-> get_innerHTML轉換為小寫字符串?

[英]How to get IHTMLDocument2 ->get_body ->get_innerHTML into a lowercase string?

我正在嘗試從c ++的網頁正文中獲取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?

我不確定我是否完全理解您的問題。 我不知道為什么get_innerHTML會給您一個不完整的正文,但是您可以將BSTR轉換為std :: string(假設您不需要支持unicode,在這種情況下,您應該一直使用std :: wstring),使用以下頁面上的函數:

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

如果您使用的是ATL,則還有CA2W轉換實用程序,但是我鏈接到的功能更好,因為如果相關的話,它將至少支持UTF8。

希望能有所幫助,

  • 的士

如果您同時具有起點和終點,則std :: transform也可以正常工作。 它適用於任何充當序列迭代器的行為(常規指針有效)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM