char 与 wchar_t 区别

charwchar_t 1、wchar_t Unicode称为宽字符型字串,COM里使用的都是Unicode字符串。wchar_t是Unicode字符的数据类型,它实际定义在<string.h>里。不能使用类似strcpy这样的ANSI C字符串函数来处理wchar_t字符串,必须使用wcs前缀的函数,例如wcscpy。 如果你想使用Unicode字符串,那么请使用这一套: wchar_t szString[100]; wcscpyszString,L"test"); 2、char ANSI字符类型。 如 阅读详情

有的人爱用strcpy等标准ANSI函数,有的人爱用_tXXXX函数,有必要把来龙去脉搞清楚。为了搞清这些函数,就必须理请几种字符类型的写法。char就不用说了,先说一些wchar_t。wchar_t是Unicode字符的数据类型,它实际定义在<string.h>里:
typedef unsigned short wchar_t;
   不能使用类似strcpy这样的ANSI C字符串函数来处理wchar_t字符串,必须使用wcs前缀的函数,例如wcscpy。为了让编译器识别Unicode字符串,必须以在前面加一个“L”,例如:
wchar_t *szTest=L"This is a Unicode string."
wchar_t是Unicode字符的数据类型,它实际定义在<string.h>里:
typedef unsigned short wchar_t;
    下面在看看TCHAR。如果你希望同时为ANSI和Unicode编译的源代码,那就要include TChar.h。TCHAR是定义在其中的一个宏,它视你是否定义了_UNICODE宏而定义成char或者wchar_t。如果你使用了TCHAR,那么就不应该使用ANSI的strXXX函数或者Unicode的wcsXXX函数了,而必须使用TChar.h中定义的_tcsXXX函数。另外,为了解决刚才提到带“L”的问题,TChar.h中定义了一个宏:“_TEXT”。
以strcpy函数为例子,总结一下:
.如果你想使用ANSI字符串,那么请使用这一套写法:
char szString[100];
strcpy(szString,"test");
.如果你想使用Unicode字符串,那么请使用这一套:
wchar_t szString[100];
wcscpyszString,L"test");
.如果你想通过定义_UNICODE宏,而编译ANSI或者Unicode字符串代码:
TCHAR szString[100];
_tcscpy(szString,_TEXT("test"));

2, ANSI与Unicode
Unicode称为宽字符型字串,COM里使用的都是Unicode字符串。
将ANSI转换到Unicode
(1)通过L这个宏来实现,例如: CLSIDFromProgID( L"MAPI.Folder",&clsid);
(2)通过MultiByteToWideChar函数实现转换,例如:
char *szProgID = "MAPI.Folder";
WCHAR szWideProgID[128];
CLSID clsid;
long lLen = MultiByteToWideChar(CP_ACP,0,szProgID,strlen(szProgID),szWideProgID,sizeof(szWideProgID));
szWideProgID[lLen] = '
(3)通过A2W宏来实现,例如:
USES_CONVERSION;
CLSIDFromProgID( A2W(szProgID),&clsid);
将Unicode转换到ANSI
(1)使用WideCharToMultiByte,例如:
// 假设已经有了一个Unicode 串 wszSomeString...
char szANSIString [MAX_PATH];
WideCharToMultiByte ( CP_ACP, WC_COMPOSITECHECK, wszSomeString, -1, szANSIString, sizeof(szANSIString), NULL, NULL );
(2)使用W2A宏来实现,例如:
USES_CONVERSION;
pTemp=W2A(wszSomeString);


C++中宽字符集wchar_t窄字符集char的转换 在处理不同语言、字符集和编码时,我们经常需要在宽字符集(wchar_t)和窄字符集(char)之间进行转换。本文将详细介绍如何在C++中进行wchar_t和char之间的转换,并提供相应的源代码示例。通过使用标准库函数和宽字符编码转换函数,我们可以在不同字符集之间进行转换。请注意,在进行字符转换时,要确保目标字符串的大小足够容纳转换后的结果,并且正确设置源字符串和目标字符串的长度参数。此外,还需要注意字符集和编码的一致性,以确保正确的转换结果。通过以上示例代码,我们可以将宽字符和窄字符之间进行相互转换。 阅读详情

相关推荐

charwchar_t(TCHAR)之间的相互转换

charwchar_t(TCHAR)之间的相互转换 1、wchar_t类型数据的初始化 char类型数据的初始化就不再骜述了;只说一下wchar_t类型的初始化: wchar_t[] = L"我是wchar_t类型的数据"; //wchar_t类型数据初始化时前面需加上宏L 2、charwchar_t之间的转换 charwchar_t类型数据之间的转换不能通过赋值的方...

技术联盟 8494

wchar_tchar的比较学习

1、wchar_t为两个字节,即16位;char为1个字节,即8位;2、wchar_t能够存储的数字为0XFF的(char存储的数字)倍;3、将char赋值给wchar_t,则wchar_t将其存储到低位;4、wchar_t 相较于char只是多了一个8位而已,其他的存储方式基本是相同的。例如,在 wchar_t存储汉字的情况下,则需要两个char类型的变量来进行存储一个wchar

梦里花 1693

TCHAR char wchar_t 的区别

有的人爱用strcpy等标准ANSI函数,有的人爱用_tXXXX函数,有必要把来龙去脉搞清楚。 为了搞清这些函数,就必须理请几种字符类型的写法。char就不用说了,先说一些wchar_t。wchar_t是Unicode字符的数据类型,它实际定义在里:typedef unsigned short wchar_t;   不能使用类似strcpy这样的ANSI C字符串函数来处理wchar_t字符串,必

dongyonghui_1017的专栏 4820

wchar_t和charWCHARCHAR区别和互相转化

win32应用程序的低层winnt.h头文件: #ifndef VOID #define VOID void typedef char CHAR; typedef short SHORT; typedef long LONG; #if !defined(MIDL_PASS) typedef int INT; #endif #endif #ifndef _MAC//苹果的MAC系统 typedef...

lyw851230的专栏 1万+

C++ 中char wchar_t char16_t char32_t的简单区别

首先这几种字符类型的首要区别就是其占用存储空间的大小不同。char 有一个字节表示,wchar_t 宽体字符,由两个字符表示。char16_t,char32_t C++ 11 新增的字符类型,char16_t 占两个字节,char32_t 占四个字节。 初始化的方法不同: #include <iostream> #include <string> using namespace std; int main() { char nameChar[] = "This is a cha

Flying snow 5242

char,wchar_t,WCHAR,TCHAR,ACHAR区别

 char:ANSI字符串,可用字符串处理函数strcat( ),strcpy( ), strlen( )等以str打头的函数。wchar_t :wchar_t是Unicode字符的数据类型,它的实际定义为:typedef unsigned short wchar_t; wchar_t 可用字符串处理函数:wcscat(),wcscpy(),wcslen()等以wcs打头的函数。WCHAR

winterimm的专栏 1675

C++字符类型总结区别wchar_t,char,WCHAR

C++字符类型总结区别wchar_t,char,WCHAR - IUNI_JM - 博客园

qq_48550824的博客 678

区别wchar_t,char,WCHAR

转至:http://www.360doc.com/content/12/0807/01/9290626_228750141.shtml 1.区别wchar_t,char,WCHAR   ANSI:即 char,可用字符串处理函数:strcat( ),strcpy( ), strlen( )等以str打头的函数。  UNICODE:wchar_t是Unicode字符的数据类型,它实际定义在里:  t...

lcxhjg的专栏 6114

charwchar_t,ACHARWCHAR,TCHAR类型字符串的区别和使用的场景

不同类型字符串区别和使用的场景

qq_44985397的博客 1637

c语言宽字符wchar,浅谈c++ 字符类型总结区别wchar_t,char,WCHAR

1、区别wchar_t,char,WCHARANSI:即 char,可用字符串处理函数:strcat( ),strcpy( ), strlen( )等以str打头的函数。UNICODE:wchar_t是Unicode字符的数据类型,它实际定义在里:typedef unsigned short wchar_t;另外,在头文件中有这样的定义:typedef wchar_t WCHAR; 所以WCHAR...

weixin_42391580的博客 935

宽字符wchar_t和窄字符char区别和相互转换

1.    首先,说下窄字符char了,大家都很清楚,就是8bit表示的byte,长度固定。char字符只能表示ASII码表中的256个字符,包括前128个可见字符和后面的128个不可见字符。        而wchar_t则是因为char所能表示的字符数太少(256个)而应运而生的,它的长度可以8bit,16bit,32bit,长度是不同平台上的c库相关的。其实这个长度是根据指定平台上想要用

nodeathphoenix的专栏 5万+

C++字符类型总结区别wchar_t,char,WCHAR (转载)

转至:http://www.360doc.com/content/12/0807/01/9290626_228750141.shtml 1.区别wchar_t,char,WCHAR   ANSI:即 char,可用字符串处理函数:strcat( ),strcpy( ), strlen( )等以str打头的函数。   UNICODE:wchar_t是Unicode字符的数据类型,它实际定义在里:...

wislosophia的博客 588

c++ 字符类型总结区别wchar_t,char,WCHAR(转)

1.区别wchar_t,char,WCHAR    ANSI:即 char,可用字符串处理函数:strcat( ),strcpy( ), strlen( )等以str打头的函数。    UNICODE:wchar_t是Unicode字符的数据类型,它实际定义在里:

mniwc的专栏 580

【转】char,wchar_t,WCHAR,TCHAR,ACHAR区别

volkswageos的专栏 2163
上一篇: VS2008下面控制台下面的宽字符中文输出
下一篇: Sqlite的相关使用
凌枫
博客等级 码龄19年 22粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值