Unicode与Ansi互转
BOOL CTool::AnsiToUnicode(const char *pSrc, CString &strResult)
{
#ifndef _UNICODE
return FALSE;
#endif
int nLen=MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,pSrc,-,NULL,);
strResult.Empty();
if(nLen==)
return FALSE;
wchar_t* pResult=new wchar_t[nLen];
MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,pSrc,-,pResult,nLen);
strResult.Format(_T("%s"),pResult);
delete[] pResult;
pResult=NULL;
return TRUE;
} wchar_t* CTool::AnsiToUnicode(const char *szStr)
{
int nLen=MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,szStr,-,NULL,);
if(nLen==)
return NULL;
wchar_t* pResult=new wchar_t[nLen];
MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,szStr,-,pResult,nLen);
return pResult;
} char* CTool::UnicodeToAnsi(const wchar_t *szStr)
{
int nLen=WideCharToMultiByte(CP_ACP,,szStr,-,NULL,,NULL,NULL);
if(nLen==)
return NULL;
char* pResult=new char[nLen];
WideCharToMultiByte(CP_ACP,,szStr,-,pResult,nLen,NULL,NULL);
return pResult;
}
后面两个函数返回一个new的指针,接收用完后需要自己手动释放
char* 到string :直接初始化或者赋值
string到char*: const char *str = s.c_str();
之后s改变,str将随之改变,所以最好将s重新拷贝一份
不允许vector初始化数组,但是可以用数组初始化vector
int int_arr[] = { 1,2,3,4,5 };
vector<int> ivec(begin(int_arr), end(int_arr));
数组的begin和end在iterator头文件中
尽量使用标准库类型,而非数组
尽量使用vector和迭代器,避免使用内置数组和指针
尽量使用string,避免使用C风格的基于数组的字符串
Unicode与Ansi互转的更多相关文章
- [转]unicode,ansi,utf-8,unicode big endian的故事
unicode,ansi,utf-8,unicode big endian的故事很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的 ...
- 有关UNICODE、ANSI字符集和相关字符串操作
Q UNICODE字符串如何显示 A 如果程序定义了_UNICODE宏直接用 WCHAR *str=L"unicodestring"; TextOut(0,0,str); 否则就需 ...
- UNICODE和ANSI字符串的转换(解释了MultiByteToWideChar,WideCharToMultiByte,GetTextCharsetInfo,GetTextCharset,IsDBCSLeadByte,IsDBCSLeadByteEx,IsTextUnicode一共7个函数)
继上集故事<多字符集(ANSI)和UNICODE及字符串处理方式准则 >,我们现在有一些特殊需求: 有时候我们的字符串是多字符型,我们却需要使用宽字符型:有的时候却恰恰相反. Window ...
- UNICODE与ANSI的区别
什么是ANSI,什么又是UNICODE呢?其实这是两种不同的编码方式标准,ANSI中的字符采用8bit,而UNICODE中的字符采用16bit.(对于字符来说ANSI以单字节存放英文字符,以双字节存放 ...
- 字符编码(续)---Unicode与ANSI字符串转换以及分辨字符编码形式
Unicode与ANSI字符串转换 我们使用windows函数MultiByteToWideChar将多字节字符串转换为宽字符字符串,如下: int MultiByteToWideChar( UINT ...
- Creating Dialogbased Windows Application (4) / 创建基于对话框的Windows应用程序(四)Edit Control、Combo Box的应用、Unicode转ANSI、Open File Dialog、文件读取、可变参数、文本框自动滚动 / VC++, Windows
创建基于对话框的Windows应用程序(四)—— Edit Control.Combo Box的应用.Unicode转ANSI.Open File Dialog.文件读取.可变参数.自动滚动 之前的介 ...
- c++ ANSI、UNICODE、UTF8互转
static std::wstring MBytesToWString(const char* lpcszString); static std::string WStringToMBy ...
- 趣谈unicode,ansi,utf-8,unicode big endian这些编码有什么区别(转载)
从头讲讲编码的故事.那么就让我们找个草堆坐下,先抽口烟,看看夜晚天空上的银河,然后想一想要从哪里开始讲起.嗯,也许这样开始比较好…… 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同 ...
- 可编译为 UNICODE 和 ANSI 版本的遍历目录树程序_0.1
路径暂时是写死的 编译两个版本的程序: g++ treeT.cpp -municode -D_UNICODE -o treeT_UNIg++ treeT.cpp -o treeT_ASC 为了观察 ...
随机推荐
- Django(二)框架第一篇基础
https://www.cnblogs.com/haiyan123/p/7701412.html 一个小问题: 什么是根目录:就是没有路径,只有域名..url(r'^$') 补充一张关于wsgiref ...
- mysql建立索引的几大原则
(转)仅供自己学习,特此记录 1.选择唯一性索引 唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录.例如,学生表中学号是具有唯一性的字段.为该字段建立唯一性索引可以很快的确定某个学生的信息 ...
- 第二十九篇-Fragment动态用法
效果图: 上节学习了静态添加Fragment的方法,这节学习动态添加方法. 主页面 layout.xml Fragment页面 layout2.xml 实现功能,当点击主页面的button时,将Fra ...
- 第十三节、SURF特征提取算法
上一节我们已经介绍了SIFT算法,SIFT算法对旋转.尺度缩放.亮度变化等保持不变性,对视角变换.仿射变化.噪声也保持一定程度的稳定性,是一种非常优秀的局部特征描述算法.但是其实时性相对不高. SUR ...
- mongoDB-权限控制
启动服务D:\MongoDB\Server\3.6\bin>mongod.exe --dbpath D:\MongoDB\Server\3.6\data 扩展 无认证启动:mongod --po ...
- parallels tools 安装
│ - kernel-devel-2.6.32-358.el6.x86_64 │ │ - dkms
- node.js小案例_留言板
一.前言 通过这个案例复习: 1.node.js中模板引擎的使用 2.node.js中的页面跳转和重定向 二.主要内容 1.案列演示: 2.案列源码:https://github.com/45612 ...
- qt: qt install framework使用问题;
qt提供了qt install framework用于程序打包,方便.快捷,并且可以对界面和功能进行自定义. 但是, 如果使用默认的打包配置,不进行安装页面功能自定义的话, 在修改安装路径时,在对程序 ...
- day07-(JDBC)
回顾: sql sql分类: DDL: 对象:数据库和表 关键词:create alter drop truncate 创建数据库:create database day06; 删除数据库: drop ...
- 下载神器(vip下载速度)
简单介绍: 用过好几款下载神器,现在推荐一款比较好用的软件,强调一点本软件强调开源免费的原则,禁止一切人员在其中收取费用. 我把这款软件放到了,自己的百度云盘. 神器的使用教程如下: 百度云下载连接: ...