对C++程序员而言,构造字符串常量是一项经常性的工作。那么,如何构造宽字符字符串常量呢?很简单,只要在字符串常量前加上一个大写的L就可以了,比如:  L“Hello, world!”这个L非常重要,只有带上它,编译器才知道你要将字符串存成每个字符1个字。还要注意,在L和字符串之间不能有空格。
问题是:
如果要把一个字符串变量放进去应该怎么用?
例如:CString l_time是当前时间的字符串,时间是一直在变的,怎么把这个 l_time转换成常量宽字符串 ,即L+l_time应该怎么写?? 

解决方案 »

  1.   

    直接将cstring转化为wchar_tchar szSrc[1024] = {0};
    sprintf(szSrc,"%s",l_time);
    int wcsLen = ::MultiByteToWideChar(CP_ACP, NULL, szSrc, strlen(szSrc), NULL, 0);
    //分配空间要给'\0'留个空间,MultiByteToWideChar不会给'\0'空间
    wchar_t* wszString = new wchar_t[wcsLen + 1];
    //转换
    ::MultiByteToWideChar(CP_ACP, NULL, szSrc, strlen(szSrc), wszString, wcsLen);
    //最后加上'\0'
    wszString[wcsLen] = '\0';
      

  2.   

    CString l_time;
    l_time.Format(L "%d-%d-%d %d:%d:%d",后面是对应的年,月,日,时,分,秒);
    这样不就可以了。
      

  3.   

    CString -> WCHAR#include <atlbase.h>USES_CONVERSION;
    T2W();