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 *的库函数怎么转换呢?

解决方案 »

  1.   

    wsprintf(buffer, _T("%d"), memory.dwAvailPhys); 
      

  2.   

    MulticharToWidechar<---用这个函数,名字可能有拼错.unicode支持多语言啊,当然好了.
      

  3.   

    MultiByteToWideChar()
    char* -> wchar_t*
      

  4.   

    3.以前使用char *的库函数怎么转换呢?
    //一般都有即可以用于ASNI,又可以用于UNICODE的宏,和TCHAR, _T, TEXT宏相似。
      

  5.   

    第2个参数错误,如上,需要加上_T,或用L"%d"
      

  6.   

    2,vs2005开始默认unicode,所以_T,就是wchar了,以前是char
      

  7.   

    1.其实以前关于char * 等 const char *一直没有弄太明白。知道const char *这种类型的字符串是不能改变的。 
    在字符串转换前为什么一般都需要转换成const类型的指针 然后再转换成另外类型的指针. 
    --------------------------------
    char * 本身就是一个字符串指针类型.2.上面这段代码应该怎么写?05以后为什么都建议使用unicode了。以前vc6的时候字符集显示也没有问题啊。现在使用那个 
    unicode 后字符串都要使用_T("hello")这种方式来赋值了? 
    你的这段程序本身在这里是使用unicode,不是05以后都建议使用unicode.
    3.以前使用char *的库函数怎么转换呢?
    使用_T("hello")这种方式.
      

  8.   

    1、加上const表示字符串只读,字符串转换前并不需要先转换成const指针,很多函数的参数定义为const指针,表示函数中不会修改其指向的数据。
    2、_T("%d"),字符串常量都加上_T()宏。
    3、用lstr和_t开头的函数,例如lstrlen、_tscanf等。
      

  9.   

    http://blog.csdn.net/kw123/archive/2007/10/11/1820722.aspx
      

  10.   

    CString strText = _T("XXXXXXXXXX"); 
    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)); 
    将多字节转化成宽字节。