有一个字符串,如:"我是中国人mynameis",我要截取该字符串的前8个字符,正确的结果应该是:"我是中国人myn",但VC中汉字是两个字节,结果造成只取得"我是中国"这几个字符,我要实现这种呢?

解决方案 »

  1.   

    或者根据ascii码判断,如果是大于127的就是2个字节一个字符
      

  2.   

    用unicode可以截取,怎样使用呢?能说详细点嘛
      

  3.   

    定义一个wchar的缓冲,再用MultibytesToWidechar把你的字符串转换到缓冲中。
    这个缓冲中的每个字符都占固定的2个字节。无论中文还是英文还是韩文。也可以把整个应用程序做成unicode的,要定义#define UNICODE宏、改入口点。如果程序简单,也可以这样做。
      

  4.   

    LPTSTR   str="我是中国人mynameis";   
    wchar_t   wstr[60];
    int   k=MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,str, strlen(str), wstr,60); 
    我是这样转换的,我要如何取得这个缓冲的值呢?
      

  5.   

    LPWSTR str=L"我是中国人mynameis"; 这样是最简单的,哈哈。你上面的代码,wstr中就是转换后的字符。你把它当中普通字符串用就行了。只是注意函数要用w系列的。
      

  6.   

    int i,j;
    i=0;j=0;
    while(s1[i])
    {
    if(j==8)s1[i]=0;
    unsigned char c=s2[i];
    if(c>128)
    {
    i+=2;j++;continue;
    }
    s1[j]=c;i++;j++;
    }
      

  7.   

    不太明白楼上的意思?s1和s2是两个char类型的数组嘛?
      

  8.   

    s2在这里没有用是我写错了。正确的是
    int i,j;
    i=0;j=0;
    while(s1[i])
    {
    if(j==8){s1[i]=0;break;}
    unsigned char c=s1[i];
    if(c>128)
    {
    i+=2;j++;continue;
    }
    i++;j++;
    }