ANSI/Unicode字符串简单介绍
1.1、wchar_t、char区别
ANSI:char,可以用strcat()、strcpy()、strlen()等str开头的函数处理char*字符串;
UNICODE:wchar_t是Unicode字符的数据类型,是我们常说的宽字符;可以用wcscat()、wcscpy()、wcslen(0等wcs开头的函数处理字符串,使用时需要在前面加一个L或者使用_T()。wchar_t的实际定义是:
typedef unsigned short wchar_t;
typedef wchar_t WCHAR;//实际WCHAR与wchar_t是相同的。
对TCHAR而言,在unicode字符集下,typedef wchar_t TCHAR; 否则是typedef char TCHAR;
char转换为wchar_t,方法一:使用TEXT();
方法二:
wchar_t* c2w(const char* str)
{
int length = strlen(str);
wchar_t* wstr = (wchar_t*)malloc(sizeof(wchar_t)*length);
memset(wstr,0,length*sizeof (wchar_t));
MultiByteToWideChar(CP_ACP,0,str,strlen(str),wstr,length);
return wstr;
}
但是一般情况下程序只会用一种字符集,这种相互转换感觉也没什么意义...?
1.2、 ANSI、Unicode之间的转换
方法一:
使用MultiByteToWideChar将ANSI字符转换成Unicode字符,使用WideCharToMultiByte将Unicode字符转换成ANSI字符。
方法二:
使用_T将ANSI转换成一般类型字符串,使用L将ANSI转换成Unicode字符串。
方法三:
使用ATL的转换宏和类,ATL宏各字符的含义
ATL3.0 C表示常量,2表示to,EX表示开辟一定大小的缓冲,sourceType和DestinationType可以是A/T/W/OLE,分别表示ANSI/Unicode/一般类型/OLE字符串;
ATL7.0 为了与ATL3.0区别,第一个C表示类,第二个C表示常量...
比如CA2CT表示将ANSI转换成Unicode字符串常量。
附录:常用的字符串以及指针的类型定义
| 类型 | MBCS bulids | Unicode builds |
| WCHAR | wchar_t | wchar_t |
| LPSTR | char* | char* |
| LPCSTR | const char* | const char* |
| LPWSTR | wchar_t* | wchar_t* |
| LPCWSTR | wchar_t* | wchar_t* |
| TCHAR | char | wchar_t |
| LPTSTR | TCHAR* | TCHAR* |
| LPCTSTR | const TCHAR* | const TCHAR* |
ANSI/Unicode字符串简单介绍的更多相关文章
- java字符串简单介绍
String:String对象初始化之后不可变线程安全简单的字符串操作使用String效率更高 StringBuffer:StringBuffer对象初始化之后可改变线程安全频繁的字符串操作可以使用S ...
- 原生ajax接收json字符串(简单介绍)
什么是json? JSON的全称是 Javascript Object Notation(javascript对象表示法),是基于javascript对象字面量,如果单从眼睛看,JSON里的数据是被保 ...
- python 基础-----数字,字符串,if while 循环 数据类型的转换简单介绍
一.第一个python小程序 首先我们要知道python创立的初衷是:Python崇尚优美.清晰.简单. 所以python比起其他的语言需要的工作量少了一半都不止,比如和现在一直霸占语言排行榜 榜首 ...
- Ansi 与 Unicode 字符串类型的互相转换
WideCharToMultiByte 实现宽字节转换到窄字节MultiByteToWideChar 实现窄字节转换到宽字节 WideCharToMultiByte 的代码页用来标记与新转换的字符串相 ...
- 字符串处理 - ANSI - Unicode - UTF8 转换
#include <stdio.h> #include <windows.h> #include <locale.h> #define BUFF_SIZE 1024 ...
- JAVA 文件编译执行与虚拟机(JVM)简单介绍
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytpo3 java程序的内存分配 JAVA 文件编译执行与虚拟机(JVM)介绍 ...
- ZooKeeper学习第一期---Zookeeper简单介绍
一.分布式协调技术 在给大家介绍ZooKeeper之前先来给大家介绍一种技术——分布式协调技术.那么什么是分布式协调技术?那么我来告诉大家,其实分布式协调技术主要用来解决分布式环境当中多个进程之间的同 ...
- 【Zookeeper系列】Zookeeper简单介绍(转)
原文链接:https://www.cnblogs.com/sunddenly/p/4033574.html 一.分布式协调技术 在给大家介绍ZooKeeper之前先来给大家介绍一种技术——分布式协调技 ...
- 4、Zookeeper简单介绍
一.分布式协调技术 在给大家介绍ZooKeeper之前先来给大家介绍一种技术——分布式协调技术.那么什么是分布式协调技术?那么我来告诉大家,其实分布式协调技术 主要用来解决分布式环境当中多个进程之间的 ...
- [转]ZooKeeper学习第一期---Zookeeper简单介绍
ZooKeeper学习第一期---Zookeeper简单介绍 http://www.cnblogs.com/sunddenly/p/4033574.html 一.分布式协调技术 在给大家介绍ZooKe ...
随机推荐
- centos7连接WIFI
centos7图形化界面可以直接连接WIFI,命令行会稍麻烦一些 环境: 1.笔记本安装centos7,没有很大的流量,基本都是交互 2.桌子后面的线路太乱,想要省去一根网线 过程: 1.安装软件 y ...
- .NET NPOI导出时间、公式等格式化
1.业务背景 做导入某业务模块的Excel表格文件时,利用NPOI组件导入, ① 导入的日期错乱(如XX-X月-2022),关于此种情况之前没做格式化做了单独处理,可以查看文章.net NPOI Ex ...
- Node Sass could not find a binding for your current environment: Windows 64-bit with Node.js 1x.x
出现问题原因: nodejs和node-sass版本不匹配 解决办法: 下载node-sass指定版本的nodejs 1)node-sass的节点版本支持政策 ① 支持的 Node.js版本因版本而异 ...
- 基于NPOI封装导出Excel方法
背景: 在工作中我们有一个很常见的业务场景:导出列表的数据,生成Excel,而使用NPOI生成Excel我们也会遇到一个问题,每遇到一个不同的类导出时都要生成不同的表头,行,列,但其实里面大部分代码都 ...
- JZOJ 5355. 【NOIP2017提高A组模拟9.9】保命
题目 为了加快社会主义现代化,建设新农村,农夫约(Farmer Jo)决定给农庄做一些防火措施,保障自己.猫.奶牛的生命安全. 农夫约的农庄里有N+1 座建筑,排成了一排,编号为0-N.对于0 < ...
- VS Ctrl+D 快速复制上一行
打开 VS 工具-->选项-->环境-->键盘 选择默认值,确定. 搞定!
- Prometheus插件安装(cadvisor)
简介 当docker服务数量到一定程度,为了保证系统的文档,我们就需要对docker进行监控.一般情况下我们可以通过docker status命令来做简单的监控,但是无法交给prometheus采集, ...
- day06-动态SQL语句
动态SQL语句 1.基本介绍 官方文档 mybatis – MyBatis 3 | 动态 SQL 为什么需要动态SQL? 动态SQL是MyBatis的强大特性之一 使用 JDBC 或其他类似的框架,根 ...
- LeetCode-432 全O(1)的数据结构
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/all-oone-data-structure 题目描述 请你设计一个用于存储字符串计数的数据结构 ...
- php 中解析xml文件
public function xmltoarr($path) {//xml字符串转数组 $xml= $path;//XML文件 $objectxml = si ...