1.字符转换

1、将单字节Char转化为双字节的wchar_t的转换函数

wchar_t* c2w(const char *str)
{
     int length = strlen(str)+1;
     wchar_t *t = (wchar_t*)malloc(sizeof(wchar_t)*length);
     memset(t,0,length*sizeof(wchar_t));
     MultiByteToWideChar(CP_ACP,0,str,strlen(str),t,length);
     return t;
}

//将单字节char*转化为宽字节wchar_t*
wchar_t* AnsiToUnicode( const char* szStr )
{
        int nLen = MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, szStr, -1, NULL, 0 );
        if (nLen == 0)
        {
             return NULL;
        }
        wchar_t* pResult = new wchar_t[nLen];
        MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, szStr, -1, pResult, nLen );
        return pResult;
}

//将宽字节wchar_t*转化为单字节char*
inline char* UnicodeToAnsi( const wchar_t* szStr )
{
       int nLen = WideCharToMultiByte( CP_ACP, 0, szStr, -1, NULL, 0, NULL, NULL );
       if (nLen == 0)
       { 
            return NULL;
       }
       char* pResult = new char[nLen];
       WideCharToMultiByte( CP_ACP, 0, szStr, -1, pResult, nLen, NULL, NULL );
       return pResult;
}

2、char[] 转换为 LPWSTR

解决方案:

思路一:
 使用CA2W字符转换宏(ATL and MFC String Conversion Macros)。
        根据MSDN描述,这个宏用于将ANSI转换为Wide Character(UNICODE)

代码如下:
        LPWSTR   aaa   =   CA2W(text);
        item.pszText = aaa;

思路二:
 使用int MultiByteToWideChar()函数。根据MSDN描述,这个方法:This
 function maps a character string to a wide-character (Unicode)
 string。

代码如下:

TCHAR aaa[31];
        MultiByteToWideChar(0,0,text,31,aaa,62);

时间: 2024-10-26 19:00:07

1.字符转换的相关文章

java GBK字符转换成为UTF-8编码字符

import java.util.HashMap; import java.util.Map; /** * 创建日期: 2014-04-18 10:36:25 * 作者: 黄飞 * mail:[email protected] [email protected] * ©版权归作者所有 * */ public class ConverFromGBKToUTF8 { public static void main(String[] args) { try { ConverFromGBKToUTF8

*数组-01. 字符转换

1 /* 2 * Main.c 3 * E1-数组-01. 字符转换 4 * Created on: 2014年8月20日 5 * Author: Boomkeeper 6 ******部分通过********** 7 */ 8 9 #include <stdio.h> 10 11 int main(void) { 12 13 char str[80] = { -1 }; 14 15 gets(str); 16 17 int i; 18 for (i = 0; i < 80; i++)

发送邮件字符转换

//將html轉為text public string HtmlToText(string strContent) { strContent = strContent.Replace("&amp", "&"); strContent = strContent.Replace("''", "'"); strContent = strContent.Replace("&lt", &quo

IO-04字节-字符转换流

掌握OutputStreamWriter和InputStreamReader的作用. 在整个IO包中,实际上就是分为字节流和字符流,但除了这两个流之外,还存在一组字节-字符流转换类. OutputStreamWriter:是Writer的子类,将输出的字符流编程字节流,既:将一个字符流的输出对象变成字节流输出对象. InputStreamReader:是Reader的子类,将输入的字节流变成字符流.既:将一个字节流的输入对象变成字符流的输入对象. 字符流转换成字节流的代码: package li

HDOJ/HDU 2140 Michael Scofield&#39;s letter(字符转换~)

Problem Description I believe many people are the fans of prison break. How clever Michael is!! In order that the message won't be found by FBI easily, he usually send code letters to Sara by a paper crane. Hence, the paper crane is Michael in the he

字符转换(2,8,10,16进制,ASCII码)

罗列了一些用到的,各进制 以及 ASCII 间的转换,记录备忘 一,先说说 2,8,10 ,16 各进制之间的转化 System.Convert类中提供了较为全面的各种类型.数值之间的转换功能: 几个比较常用的方法  1,Convert.ToInt32(string value, int fromBase)  :将字符串转换为数字(如2进制0010>也就是2^1=2)  fromBase: 顾名思义参数的进制(2,,8,10,16)     2,Convert.Tostring(int valu

字符转换二进制码

编码.for 3.5 for循环的时候,循环的每一个元素是"字符" 字符-------->字节 utf-8     ----->3字节 gbk   --------->2字节 name = "小明" for i in name: bytes_list = bytes(i, encoding = "utf - 8")  #默认的每一个字节都是16进制 for b in bytes_list:                    

BarCode128B字符转换函数(PB,SQL)

PB 1 //CODE128条码基础知识 2 //CODE128有三个版本 3 //CODE128A: 标准数字和字母, 控制符, 特殊字符 4 //CODE128B: 标准数字和字母, 小写字母, 特殊字符 5 //CODE128C: [00]-[99]的数字对集合, 共100个 6 //本函数采用CODE128B版本 7 //条码由开始位.数据位.校验位.停止位组成 8 //计算过程: 9 //1.取各字符ASC码乘以字符序号之和(以ASC=32为分界点,大于32减32,小于32加64) 1

通过编写串口助手工具学习MFC过程&mdash;&mdash;(三)Unicode字符集的宽字符和多字节字符转换

通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个串口助手再次熟悉一下MFC,并做了一下记录,以便方便以后查阅.做的过程中多是遇到问题直接百度和谷歌搜索来的,所以很多都是不求甚解,知其然不知其所以然.另外做此工具只是为了熟悉了解,许多功能还没有完善!(开发工具VS2008) (三)Unicode字符集的宽字符和多字节字符转换 在上一节<(二)通过&qu