Win32中CStdString 是需要TCHAR类型的值才可以赋值的,而很多文件读取时FILE的fopen函数之类的需要的是CHAR,我们需要把它们互转,这里我在网上找到了一个比较方便的方法。没有定义UNICODE,所以它里面的字符串就是简单用” “就行了,创建工程的时候包含了UNICODE定义,就必须对TCHAR和char进行转换。
首先是把TCHAR转为char
TcharToChar(const TCHAR * tchar, char * _char)
int iLength;
iLength = WideCharToMultiByte(CP_ACP, 0, tchar, -1, NULL, 0, NULL, NULL);
WideCharToMultiByte(CP_ACP, 0, tchar, -1, _char, iLength, NULL, NULL);
然后是把char转为TCHAR
CharToTchar(const char * _char, TCHAR * tchar)
int iLength;
iLength = MultiByteToWideChar(CP_ACP, 0, _char, strlen(_char) + 1, NULL, 0);
MultiByteToWideChar(CP_ACP, 0, _char, strlen(_char) + 1, tchar, iLength);
Win32中CStdString 是需要TCHAR类型的值才可以赋值的,而很多文件读取时FILE的fopen函数之类的需要的是CHAR,我们需要把它们互转,这里我在网上找到了一个比较方便的方法。没有定义UNICODE,所以它里面的字符串就是简单用” “就行了,创建工程的时候包含了UNICODE定义,就必须对TCHAR和char进行转换。 首先是把TCHAR转为char//将TCHAR转为char
C++的TCHAR字符串和char字符串互转
下面用一个例子来演示一下TCHAR和char字符串的互转,主要用到两个函数WideCharToMultiByte和MultiByteToWideChar。
观察下这两个函数,WideChar表示宽字节的字符串,MultiByte表示窄字节的字符串,TCHAR是宽字节,char是窄字节,所以TCHAR到char用WideCharToMultiByte函数,反之则用MultiByteToWideChar函数。
如下所示,将TCHAR的字符串转化为char,第一次调用
C++编程中屡屡要遇到宽窄字符转换的问题,尤其是字符串中有中文,稍有不慎就会中文乱码,程序运行出错。
下面为
char*、
char[]与T
CHAR*、T
CHAR[]
互转的用法,不求花哨,只求好用!请参考~
char转T
CHAR
char转T
CHAR
VS中TCHAR与char相互转换TCHAR转charchar转TCHAR示例
TCHAR转char
size_t wcstombs( char *mbstr, const wchar_t *wcstr, size_t count );
char转TCHAR
size_t mbstowcs( wchar_t *wcstr, const char *mbstr, size_t count );
char Path[MAX_PATH] = {0};
TCHAR T_Path[MAX_PATH
//将T
CHAR转为
char
//*t
char是T
CHAR类型指针,*_
char是
char类型指针
T
charTo
Char (const T
CHAR * t
char,
char * _
char)
int iLength ;
from:
http://blog.sina.com.cn/s/blog_6f5b220601015o21.html
没有定义UNICODE,所以它里面的字符串就是简单用" "就行了,创建工程的时候包含了UNICODE定义,就必须对TCHAR和char进行转换。
首先是把TCHAR转为char
[cpp]
view plaincopyprint?
//将TCHAR转为
<br />直接给出实例:<br />void CK390_TestApp::OnGprsTest()
// TODO: Add your command handler code here
int dwRet=0;
HDC hdc;
hdc = CreateDC(0,0,0,0);//获得设备句柄
RETAILMSG(1,(_T("GPRS Test./n")));
InitGPIOAddr();
//232CTR->GPJ9 =0 -> GPRS
//GSMPW