CString strHello = _T("XXX");
strHello.LoadString(IDS_HELLO);
LPCTSTR lpszText = strHello;
wprintf(_T("\n%s\n") , strHello);
wcout << (LPCTSTR)strHello << endl;

解决方案 »

  1.   

        CString str;
        int n=11;
        char szText[] = "1一2二3三4四5五6六7七8八9九0零";
        str = szText;
        char szBuf[40];
        strncpy(szBuf , szText , n);
        szBuf[n] = '\0';
        cout << szBuf << "dafa" << endl; //加上dafa或其它字符,可以看到乱码
        cout << (LPCSTR) str.Left(n) << "dafa" << endl;    cout << endl << "Unicoded:" << endl;    int nAnsiLen = strlen(szText);    int nUniLen = MultiByteToWideChar(CP_ACP , MB_PRECOMPOSED , szText , nAnsiLen ,
            NULL , 0);    LPWSTR pUnicode = (LPWSTR) LocalAlloc(LPTR , nUniLen);    MultiByteToWideChar(CP_ACP , MB_PRECOMPOSED , szText , nAnsiLen ,
            pUnicode , nUniLen);    ASSERT(pUnicode != NULL);    LPWSTR pBuf = (LPWSTR) LocalAlloc(LPTR , nUniLen);
        wcsncpy(pBuf , pUnicode , n);    BOOL bDefault;    ZeroMemory(&szBuf , 40);
        WideCharToMultiByte(CP_ACP , WC_COMPOSITECHECK , pBuf , n ,
            szBuf , 40 , NULL ,  &bDefault );
        cout << szBuf << "dafa"  << endl; //没有乱码 ok!
        
        LocalFree(pUnicode);
        LocalFree(pBuf);CString strHello = _T("XXX");
    strHello.LoadString(IDS_HELLO);
    LPCTSTR lpszText = strHello;
    wprintf(_T("\n%s\n") , strHello);
    wcout << (LPCTSTR)strHello << endl;
      

  2.   

    谢谢,可是在windows ce上不灵啊!
      

  3.   

    在windows ce仿真环境上不灵,但在支持中文的在windows ce系统上是行的
      

  4.   

    to wcq(wangcq):
        windows ce仿真环境上不灵,支持中文的在windows ce系统上还行的,谢谢你,把分给你先,再一次谢谢你。rocks_lee(石子儿):
        谢谢你的参与。
      

  5.   

    to zhq2000(俗子):
        我的意思是在ce里把multibyte格式存储的数据读出来,转化成multicode字符串。没办法,我只好把数据存为multicode再存起来了.