两个问题:
1:
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{
int a;
wchar_t *b=L"Hello!";
a=_tcslen(b); return 0;
}
a为什吗=1啊?我已经设为UNICODE(在工程-设置-C/C++下将_MBCS改为UNICODE,难道不对?)
2:
         char *a="aaadddd";
int b=sizeof(a);
b=4,为什吗?

解决方案 »

  1.   

    你用的是char类型,要使用_TEXT宏才行……而且你是对指针是用sizeof操作符,这样的话当然只能得到4,你要调用的strlen(对于ANSI字符串来说),或者wcslen(对于wchar_t*来说),而且需要用_TEXT宏修饰字符串,譬如这样wchar_t *a = _TEXT("aaadddd");
    int b = wcslen(a);
      

  2.   

    第二个问题明白
    第一个问题我已经定义为了UNICODE,_tcslen=wcslen,怎马结果不对?
      

  3.   

    结果总是6
    int a;
    wchar_t *b=L"Hello!";
    a=_tcslen(b);
    if(a == 6)
    {
    MessageBox(NULL,L"6",NULL,MB_OK);
    }怎么判断等于1的?
      

  4.   

    第一个:
    int a;
    wchar_t *b=L"Hello!";
    a=wcslen(b);
    CString str;
    str.Format("%d",a);
    MessageBox(str);
    第二个:已经说得差不多了
      

  5.   

    我的机子就是a=1啊
    在工程-设置-C/C++下将_MBCS改为UNICODE,设得不对?
      

  6.   

    sizeof 返回的字节数,strlen返回的是字符数??
      

  7.   

    sizeof 返回的是类型大小
    如:
    short = 2;
    int = 4;
    long = 8;
    char = 1;
    float = 4;
    double = 8;
    ...strlen返回的是字符串长度
    int l = strlen("a");      // l = 1
    int l = strlen("abc");    // l = 3
      

  8.   

    第一个问题在给解答一下,谢谢
    我在工程-设置-C/C++下将_MBCS改为UNICODE,是不是设的不对
    如果对的话,_tcslen不就是等于wcslen吗?我的结果怎吗是1啊
      

  9.   

    需要定义_UNICODE宏和UNICODE宏才行
      

  10.   

    需要定义_UNICODE宏和UNICODE宏才行怎马定义?
      

  11.   

    在头文件里加入
    #define UNICODE
    #defien _UNICODE然后在工程->设置->连接
    输出 入口点 写入 wWinMainCRTStartup