这个语句中_T('\0')是判断m_lpCmdLine[0]里面的string 是不是\0  ?还是判断m_lpCmdLine[0]里面的是不是0?还有这个_T什么意思
#define _T(x)       __T(x)
#define __T(x)      x

解决方案 »

  1.   

    \0是字符串结束标志._T是宏,它是为了保持ansi于unicdoe的和谐.当你定义了_UNICODE宏是,_T("xxx")表示unicode字符,反之是ansi.
      

  2.   

    \0是字符串结束标志 看看数组的定义 数组结束时都会在末尾自动加上'\0'
    例如:a[5]={1,2,3}那么a[3]就等于'\0'
    _T是UNICODE字符型 一般现在用VC2008的话一般都是这个类型 长字节型
      

  3.   

    \是转义字符?      ‘\0’= NULL?
      

  4.   

    ansi 时是 char 0x00;Unicode 时是 short 0x0000
      

  5.   

    没有所谓的“m_lpCmdLine[0]里面的string”这种称谓,一个字符里不可能放下一个所谓的string至于_T,它是一个垫片宏,在MCBS编译模式下,它被翻译成楼主贴的这个解释,也就是说这个宏什么都不做。但是在UNICODE模式下,它被翻译成L x,这样x就被翻译成宽字符。
    使用_T的好处是,对于一个字符串,它在两种编译模式下都可以正常工作。有很多搞VC6的人到vc2005之后发现自己代码有一堆错误,很大原因就是vs2005缺省使用unicode编译,而这些人没有使用_T的原因
      

  6.   

    意思就是判断字符串是否为空("")
    因为为空的话第一个字符str[0]就等于0
      

  7.   

    m_lpCmdLine[0]  这个数组里面是什么元素,msdn怎么没讲那,是char数组还是CSting?
      

  8.   

    你看不到它的类型?在VC里选择这个变量,按F12就应该可以看到它定义了
      

  9.   

    LPTSTR m_lpCmdLine;怎么当数组用那!
      

  10.   

    CString s = AfxGetApp()->m_lpCmdLine[0];那就只取了数组中第一个元素了?
    有这个语法吗?   m_lpCmdLine[0]; m_lpCmdLine是指针那!
      

  11.   

    很显然,这是一个标准的定义新变量语法,只要CString接收单个字符为参数,就是合法的。如果你怀疑它不合法,应该去看看CString支持哪几种构造函数