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 ...
随机推荐
- Java 入门与进阶P-7.1+P-7.2
函数的定义 函数的定义 习惯把函数也叫成方法,都是一个意思:函数是具备特定功能的一段代码块,解决了重复性代码的问题. 为什么要定函数呢? 目的是为了提高程序的复用性和可读性. 函数的格式 修饰符返回值 ...
- JSP第四次作业
1. 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8&q ...
- spring security登录认证流程解析
转 https://blog.csdn.net/qq_37142346/article/details/80032336 1.说明 用户认证流程 认证结果如何在多个请求之间共享 获取认证用户信息.用户 ...
- TEB学习
官方资料:http://wiki.ros.org/teb_local_planner/Tutorials set up and test Optimization(重要) Inspect optimi ...
- shrio
Shrio 页面报错 <link rel="shortcut icon" href="#"/> 简单的安全框架 官网:https://shiro.a ...
- 多线程并发(二):聊聊AQS中的共享锁实现原理
在上一篇文章多线程并发(一)中我们通过acquire()详细地分析了AQS中的独占锁的获取流程,提到独占锁,自然少不了共享锁,所以我们这边文章就以AQS中的acquireShared()方法为例,来分 ...
- zerologon复现
zerologon漏洞复现 目录 zerologon漏洞复现 漏洞介绍 实验环境 实验开始 一.在github上下载脚本 二.检测是否可以利用 三.利用漏洞 1.清空域控账号密码 2.导出admin凭 ...
- Python常见面试题006 类方法、类实例方法、静态方法有何区别?
006. Python中类方法.类实例方法.静态方法有何区别? 全部放一个里面篇幅过大了,就拆分成1个个发布 示例代码 class Human: def __init__(self, name): s ...
- 如何把已安装的nodejs高版本降级为低版本(图文教程)
第一步.先清空本地安装的node.js版本 1.按健win+R弹出窗口,键盘输入cmd,然后敲回车(或者鼠标直接点击电脑桌面最左下角的win窗口图标弹出,输入cmd再点击回车键) 2.然后进入命令控制 ...
- 探索 C 语言的指针
指针的概念 指针代表一个变量的内存地址,通过&可以拿到变量的内存地址.变量不等于指针,通过*可以拿到指针所指向的变量的值. 在 C 中,存在指针变量,指针变量的声明格式:int* varNam ...