zoukankan      html  css  js  c++  java
  • libCEF总结02字符串

    libCEF 的 CefString、cef_string_t 在 Windows 下均表示一个 16 位的 Unicode 字符串,它们的使用请参考下面的代码

    {//wchar_t* ==> CefString

    const wchar_t* pUTF16 = L"字符串(UTF-16)";

    CefString s(pUTF16); // 处会被截断, 内部调用 FromWString

    s = pUTF16; // 处会被截断, 内部调用 FromWString

    CefString s1(std::wstring(pUTF16,12)); // 处不会被截断,内部调用 FromWString

    s.FromWString(std::wstring(pUTF16,12)); // 处不会被截断

    s.FromString(pUTF16,12,true); // 处不会被截断,这个效率应该是最高的(不会产生 std::wstring 临时对象)

    }

    {//CefString ==> wchar_t*

    CefString s(L"字符串");

    const wchar_t*pUTF16 = NULL;

    pUTF16 = s.ToWString().c_str(); //s.ToWString() 返回的是 std::wstring 对象

    pUTF16 = ((std::wstring)s).c_str(); //(std::wstring)s 会调用 ToWString 返回 std::wstring 对象

    pUTF16 = (const wchar_t*)s.c_str(); //效率最高,但有可能返回 NULL

    }

    {//UTF-8 ==> CefString

    const wchar_t* pUTF16 = L"字符串(UTF-8)";

    char pUTF8[256];

    int nLen8 = WideCharToMultiByte(CP_UTF8,0,pUTF16,11,pUTF8,sizeof(pUTF8),NULL,NULL);

    pUTF8[nLen8] = '';

    CefString s(pUTF8); // 处会被截断, 内部调用 FromString

    s = pUTF8; // 处会被截断, 内部调用 FromString

    CefString s1(std::string(pUTF8,nLen8)); // 处不会被截断,内部调用 FromString

    s.FromString(std::string(pUTF8,nLen8)); // 处不会被截断

    }

    {//CefString ==> UTF-8

    CefString s(L"字符串");

    const char*pUTF8 = NULL;

    pUTF8 = s.ToString().c_str(); //s.ToString() 返回的是 std::string 对象

    pUTF8 = ((std::string)s).c_str(); //(std::string)s 会调用 ToString 返回 std::string 对象

    }

    {//CString ==> CefString

    CString s(_T("字符串"));

    CStringW sW((LPCTSTR)s,s.GetLength());

    CefString sCS;

    sCS.FromString((const wchar_t*)sW,sW.GetLength(),true);

    }

    {//CefString ==> CString

    CefString sCS(L"字符串");

    CString s((const wchar_t*)sCS.c_str(),sCS.length());

    }

    {//cef_string_t 的使用

    CefSettings settings; //settings.locale 就是一个 cef_string_t

    /**************************************************************************

    下面的代码给 cef_string_t 变量赋值,即给 settings.locale 赋值

    CefString 的成员变量 string_ 就是一个 cef_string_t*

    创建 CefString 临时对象时,该对象的成员变量 string_ = &settings.locale

    接着调用 CefString::operator= 函数,给 string_ 赋值 L"zh-CN"(其实是给 settings.locale 赋值)

    CefString 临时对象析构时,成员变量 owner_ 为 false,就不会释放 string_ 所指向的字符串了

    最终 settings.locale 就是 L"zh-CN"

    **************************************************************************/

    CefString(&settings.locale) = L"zh-CN";

    /**************************************************************************

    根据 cef_string_t 变量获得 Unicode 字符串的首地址和字符数

    **************************************************************************/

    const wchar_t* pStr = (const wchar_t*)settings.locale.str; //首地址,有可能为 NULL

    int nLen = settings.locale.length; //字符数

    }

  • 相关阅读:
    新MGDN论坛(NewMGDN.com)重新上线
    从MapGuide Enterprise 2010针对XSS的的安全补丁看.Net 编程的安全性
    Map 3D 2010 开发中的OnCheckIn事件处理
    Windows 7上开发MapGuide时的安装问题
    Maestro的最近进展
    “Sharing Position with Friends” in MGE based Web GIS Application
    预告5月28号:Autodesk MapGuide Enterprise 2011 API 新功能培训
    Improvement for “Sharing Position with Friends” in MGE based Web GIS Application
    AutoCAD Map3D 改进意见征集活动
    Windows 7 Tips! 透明缓存(transparent caching)技术
  • 原文地址:https://www.cnblogs.com/hanford/p/6168746.html
Copyright © 2011-2022 走看看