c++ - 如何将 IHTMLDocument2 ->get_body ->get_innerHTML 变成小写字符串?

标签 c++ visual-c++ string lowercase

我正在尝试从 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,只包含第一个 block 。即使它有效,我也不知道如何使用 std::string 轻松地将其全部变为小写,我会使用“transform”+“tolower”来做到这一点。

那么,如何将 bstrContent 转换为 std::string?

最佳答案

我不确定我是否完全理解您的问题。我不知道为什么 get_innerHTML 会给你一个不完整的 body ,但你可以将 BSTR 转换为 std::string (假设你不需要支持 unicode,在这种情况下你应该使用 std::wstring 无论如何)使用下一页上的函数:

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

如果您使用的是 ATL,还有 CA2W 转换实用程序,但我链接到的函数更好,因为它至少支持 UTF8(如果相关)。

希望对你有帮助,

  • 塔西里安

关于c++ - 如何将 IHTMLDocument2 ->get_body ->get_innerHTML 变成小写字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4342706/

相关文章:

c++ - 如果文件末尾大括号未闭合,则引发编译错误 (C++)

c++ - CRT 语言环境临界区死锁

windows - NtQueryObject 卡在具有特定访问掩码的对象类型编号 30 上

r - 按顺序提取子字符串

c++ - 为什么操作系统不拒绝为该程序分配内存?

构造函数中的 C++ 链接器错误

C++ 库 (unix) 解析日期/时间字符串包括时区

android - 使用 HashMap 映射 String 和 int

regex - JAPE(Java注释模式引擎)中正则表达式运算符的区别

c++ - 六角射线转换