MEMORYSTATUS memory;
// The worker loop of a service
while (ServiceStatus.dwCurrentState ==
SERVICE_RUNNING)
wchar_t buffer[16];
GlobalMemoryStatus(&memory);
wsprintf(buffer, "%d", memory.dwAvailPhys); //这里错误
error C2664: “wsprintfW”: 不能将参数 2 从“const char [3]”转换为“LPCWSTR”
1.其实以前关于char * 等 const char *一直没有弄太明白。知道const char *这种类型的字符串是不能改变的。
在字符串转换前为什么一般都需要转换成const类型的指针 然后再转换成另外类型的指针.
2.上面这段代码应该怎么写?05以后为什么都建议使用unicode了。以前vc6的时候字符集显示也没有问题啊。现在使用那个
unicode 后字符串都要使用_T("hello")这种方式来赋值了?
3.以前使用char *的库函数怎么转换呢?
// The worker loop of a service
while (ServiceStatus.dwCurrentState ==
SERVICE_RUNNING)
wchar_t buffer[16];
GlobalMemoryStatus(&memory);
wsprintf(buffer, "%d", memory.dwAvailPhys); //这里错误
error C2664: “wsprintfW”: 不能将参数 2 从“const char [3]”转换为“LPCWSTR”
1.其实以前关于char * 等 const char *一直没有弄太明白。知道const char *这种类型的字符串是不能改变的。
在字符串转换前为什么一般都需要转换成const类型的指针 然后再转换成另外类型的指针.
2.上面这段代码应该怎么写?05以后为什么都建议使用unicode了。以前vc6的时候字符集显示也没有问题啊。现在使用那个
unicode 后字符串都要使用_T("hello")这种方式来赋值了?
3.以前使用char *的库函数怎么转换呢?
char* -> wchar_t*
//一般都有即可以用于ASNI,又可以用于UNICODE的宏,和TCHAR, _T, TEXT宏相似。
在字符串转换前为什么一般都需要转换成const类型的指针 然后再转换成另外类型的指针.
--------------------------------
char * 本身就是一个字符串指针类型.2.上面这段代码应该怎么写?05以后为什么都建议使用unicode了。以前vc6的时候字符集显示也没有问题啊。现在使用那个
unicode 后字符串都要使用_T("hello")这种方式来赋值了?
你的这段程序本身在这里是使用unicode,不是05以后都建议使用unicode.
3.以前使用char *的库函数怎么转换呢?
使用_T("hello")这种方式.
2、_T("%d"),字符串常量都加上_T()宏。
3、用lstr和_t开头的函数,例如lstrlen、_tscanf等。
LPWSTR lpwText = strText.GetBuffer(strText.GetLength());
strText.ReleaseBuffer(); char buff[MAX_LENGTH];
int iSizeS = wcslen(lpwText);
WideCharToMultiByte(CP_ACP, 0, lpwText, iSizeS, buff, sizeof(buff), NULL, NULL); // 将宽字节(UNICODE)转化成多字节(ANSI)的
buff[iSizeS] = '\0'; 你可以使用
MultiByteToWideChar(CP_ACP, 0, buff1, sizeof(buff1), wbuff, sizeof(wbuff));
将多字节转化成宽字节。