int nLen = wcslen(pTchar) + 1;     pChar = new char[nLen * 2];     WideCharToMultiByte(CP_ACP, 0, pTchar, nLen, pChar, 2 * nLen, NULL, NULL); #else     int nLen = strlen(pTchar) + 1;     pChar = new char[nLen];     memcpy(pChar, pTchar, nLen*sizeof(char)); #endif     return pChar; // 使用: char *p = TCHARToChar(pTchar); // ... delete [] p; p = NULL ;

char  * 转为 TCHAR *

TCHAR* CharToTCHAR(const char* pChar)
    TCHAR *pTchar = NULL;
    int nLen = strlen(pChar) + 1;
#ifdef _UNICODE
    pTchar = new wchar_t[nLen];
    MultiByteToWideChar(CP_ACP, 0, pChar, nLen, pTchar , nLen);
#else
    pTchar = new char[nLen];
    wcsncp(pTChar, pChar , nLen*sizeof(char));
#endif
    return pTchar ;

使用方式同上

转码(常用类型和字符转换)转码(常用类型和字符转换)TCHAR * 转为char * char* TCHARToChar(const TCHAR* pTchar){ char* pChar = NULL;#ifdef _UNICODE int nLen = wcslen(pTchar) + 1; pChar = new char[nLen * 2]; ...
char :单字节变量类型,最多表示256个字符, wchar_t :宽字节变量类型,用于表示Unicode字符, 它实际定义在<string.h>里:typedef unsigned short wchar_t。 为了让编译器识别Unicode字符串,必须以在前面加一个“L”,定义宽字节类型方法如下: wchar_t c = `A' ; wchar_t * p = L...
//将TCHAR转为char   //*tchar是TCHAR类型指针,*_charchar类型指针   TcharToChar (const TCHAR * tchar, char * _char)       int iLength ;
因为C++支持两种字符串,即常规的ANSI编码(使用""包裹)和Unicode编码(使用L""包裹),这样对应的就有了两套字符串处理函数,比如:strlen和wcslen,分别用于处理两种字符串。 微软将这两套字符集及其操作进行了统一,通过条件编译(通过_UNICODE和UNICODE宏)控制实际使用的字符集,这样就有了_T("")这样的字符串,对应的就有了_tcslen这样的函数 char:计算机编程语言(c、c++、java、VFP等)中可容纳单个字符的一种基本数据类型。 TCHAR:为了满足Unicode编码,对char的扩展,即_T(“str”)表示TCHAR类型 C++支持两种字符串,即常规的ANSI编码(使用""包裹)和Unicode编码(使用L""包裹),这样对应的就有了两套字符串字符串处理函数,比如:strlen和
C++编程中屡屡要遇到宽窄字符转换的问题,尤其是字符串中有中文,稍有不慎就会中文乱码,程序运行出错。 下面为char*、char[]与TCHAR*、TCHAR[]互转的用法,不求花哨,只求好用!请参考~ char转TCHAR  char转TCHAR
Win32中CStdString 是需要TCHAR类型的值才可以赋值的,而很多文件读取时FILE的fopen函数之类的需要的是CHAR,我们需要把它们互转,这里我在网上找到了一个比较方便的方法 没有定义UNICODE,所以它里面的字符串就是简单用" "就行了,创建工程的时候包含了UNICODE定义,就必须对TCHARchar进行转换。 首先是把TCHAR转为char