谢谢

解决方案 »

  1.   

    CString s;
    s.GetAt(n);你想要的那个字符
      

  2.   

    CString str=_T("12");TCHAR ch;
    ch = str[0];ch = str.GetAt(1);
      

  3.   

    如何转化为字符串了,我用下面的不行啊,
    CString str1;
        str1.Format("%c",m_lr.GetAt(1));
    MessageBox(str1);另外汉字如何得到了?谢谢
      

  4.   

    我知道如何得到了,但是汉字却不行,总是弹出问号,我该怎么办啊?int len=strlen(m_lr);
        CString str1;
        str1.Format("%c",m_lr.GetAt(len-1));
        MessageBox(str1);
      

  5.   

    汉字是双字符集,要显示就两半一起来,最好先转换成UNICODE
      

  6.   

    CString sStr="abcdef";
    CString sSub=s[0];
    MessageBox(sSub);
      

  7.   

    获得汉字需要了解该汉字的编码。gb2312编码,unicode编码中汉字都为2个字节编码,不过gb2312编码中汉字字节都大于127,即8位字节中首位为1,所以很容易和英文字符区别。而unicode的判断就麻烦点,需要先将其转换为gb2312编码,然后再判断。
    编译器中默认都是gb2312编码,获取字符串中的汉字就取以奇数个大于128的字节开始的字符
      

  8.   

    获取以下字符串的第5个字符,即中文“明”
    CString s="abc小明";
    CString sResult;
    LPCTSTR p=s;
    int n=0;
    while(*p)
    {
     if(*p>=0x80)
       p++;//过滤汉字半字节
    n++;
    if(n==5)
    {//找到第5个字符,以p开始的字符串指针
     sResult=p;
     return ;
    }
    p++;
    }
      

  9.   

    怎么转UNICODE了?LPCSTR lpa = "Hello,你好";
          size_t aLen = strlen( lpa ) + 1;
          
          int wLen = MultiByteToWideChar(
    CP_ACP,
    0,
    lpa,
    aLen,
    NULL,
    0);
          
          LPOLESTR lpw = new WCHAR [wLen];
          MultiByteToWideChar(
    CP_ACP,
    0,
    lpa,
    aLen,
    lpw,
    wLen);
          ... ... ... ...
          delete [] lpw;