libCEF总结02字符串
libCEF 的 CefString、cef_string_t 在 Windows 下均表示一个 16 位的 Unicode 字符串,它们的使用请参考下面的代码
{//wchar_t* ==> CefString
const wchar_t* pUTF16 = L"字符串\0(UTF-16)";
CefString s(pUTF16); //\0 处会被截断, 内部调用 FromWString
s = pUTF16; //\0 处会被截断, 内部调用 FromWString
CefString s1(std::wstring(pUTF16,12)); //\0 处不会被截断,内部调用 FromWString
s.FromWString(std::wstring(pUTF16,12)); //\0 处不会被截断
s.FromString(pUTF16,12,true); //\0 处不会被截断,这个效率应该是最高的(不会产生 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"字符串\0(UTF-8)";
char pUTF8[256];
int nLen8 = WideCharToMultiByte(CP_UTF8,0,pUTF16,11,pUTF8,sizeof(pUTF8),NULL,NULL);
pUTF8[nLen8] = '\0';
CefString s(pUTF8); //\0 处会被截断, 内部调用 FromString
s = pUTF8; //\0 处会被截断, 内部调用 FromString
CefString s1(std::string(pUTF8,nLen8)); //\0 处不会被截断,内部调用 FromString
s.FromString(std::string(pUTF8,nLen8)); //\0 处不会被截断
}
{//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; //字符数
}
libCEF总结02字符串的更多相关文章
- C语言-06复杂数据类型-02字符串
#include <stdio.h> int main() { //char name[] = {'i', 't', 'c', 'H', 's', 't', '\0'}; char nam ...
- Python数据类型-02.字符串
本文主要记录字符串的相关知识,包括字符串的定义特点,常用方法和 请知悉: 计算机中,一切皆为对象世界万物,皆为对象,一切对象皆可分类 1.什么是字符串? 类似"hello world&quo ...
- Java String:重要到别人只能当老二的字符串类
字符串,是Java中最重要的类.这句肯定的推断不是Java之父詹姆斯·高斯林说的,而是沉默王二说的,因此你不必怀疑它的准确性. 关于字符串,有很多的面试题,但我总觉得理论知识绕来绕去没多大意思.你比如 ...
- SQL语句操作数据与一些函数使用的丰富数据库
数据库有多重要,其实不用我说,但该怎么运用好数据库下SQL语句与其它的如“函数”等等,那就需要我们大家多多去练习并总结其中的窍门,或许你的总结没那么好,担只要你的练习足够多,就算那不是窍门,那也将是你 ...
- 微冷的雨Java基础学习手记(一)
使用Java理解程序逻辑 之凌波微步 船舶停靠在港湾是很安全的,但这不是造船的目的 北大青鸟五道口原玉明老师出品 1.学习方法: 01.找一本好书 初始阶段不适合,可以放到第二个阶段,看到知识点时,要 ...
- C#语言和数据库基础
第一章 第一个C#程序 Vs2012密钥 RBCXF-CVBGR-382MK-DFHJ4-C69G8 01..net和C#的区别 大概在2000年,微软推出了一种革命性的产品--.NET(战略) 目标 ...
- S1java基础学习笔记
第一章 Java基础 程序目标:减轻现实生活中一类人的工作量,提高工作效率. 学员最终可以书写系统: 超市管理系统,POS机系统等 入库单 销售单 01.课程重点 五大重点: 01.分支(选择)结构 ...
- NSURLConnection使用
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- C#语言的基础
一.C#的引入 01..net和C#的区别 1)大概在2000年,微软推出了一种革命性的产品--.NET(战略) 目标:任何人,在任何地方,使用任何终端设备,都可以访问微软提供的服务. 2).net ...
随机推荐
- 2016 Al-Baath University Training Camp Contest-1 C
Description Rami went back from school and he had an easy homework about bitwise operations (and,or, ...
- linux系统中如何查看日志 (常用命令2)
cat tail -f 日 志 文 件 说 明 /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/secure 与安全相关 ...
- UVA10339 Watching Watches
题目大意:有两个表,每天都会慢一点时间,给出每天慢得秒数,问下一次重合的时刻. 解题思路:时刻重合也就是说整整差了一周,一周是12小时,用12小时的秒数除以两个表的相差那就是需要多少天的时间后重合,知 ...
- Mysql压测工具mysqlslap 讲解
在mysql5.1以后的版本:客户端带了个工具mysqlslap可以对mysql进行压力测试: 可以使用mysqlslap --help来显示使用方法: Default options are rea ...
- 回归——线性回归,Logistic回归,范数,最大似然,梯度,最小二乘……
写在前面:在本篇博客中,旨在对线性回归从新的角度考虑,然后引入解决线性回归中会用到的最大似然近似(Maximum Likelihood Appropriation-MLA) 求解模型中的参数,以及梯度 ...
- 基本的DMA控制器
DMA的基本概念 直接内存访问(DMA)是一种完全由硬件执行I/O交换的工作方式.在这种方式中,DMA控制器从CPU完全接管对总线的控制,数据交换不经过CPU,而直接在内存和I/O设备之间进行 .DM ...
- [JAVA设计模式]第三部分:结构模式
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- [C程序设计语言]第四部分
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- MySQL SELECT语句
说明:MySQL的offset第一行是0 位置指的是在SELECT语句中第几个出现的字段,如:1,则代表用第一个出现的字段来分组. SELECT语句: SELECT select_expr1 [,s ...
- Windows Internals学习笔记(五)Synchronization
参考资料: 1. <Windows Internals> 2. 自旋锁spinlock剖析与改进 3. Lock指令前缀 4. Lock指令前缀(二) 5. Kernel Dispatch ...