n = atoi ( s.operator LPCTSTR() + 2);
s为CString
n为int

解决方案 »

  1.   

    CString s="1234";
    int n = atoi ( s.operator LPCTSTR() + 2); //n=34
    等价于
    CString s="1234";
    const char *s2=(LPCTSTR)s;
    int n = atoi(&s2[2]);  //n=34
      

  2.   

    就是先把CString型的s转为Int型,再加上2,然后赋给n。
      

  3.   

    同意xhzhang6(zxh)BTW:这段代码太不规范了!呵呵
      

  4.   

    如果你是
       如 CString s= "345"
    n = atoi((LPCTSTR)s)+2; 
    //这样n = 347
      

  5.   

    准确的说s的值并未改变,
    s.operator LPCTSTR() 将返回一个const char* 。其实应该是地址
      

  6.   

    s.operator LPCTSTR()是转换运算符,相当于强制转换,作用于对象.一般的强制转换适用于基本数据类型.
    s.operator LPCTSTR()转换后得到一个LPCTSTR型的指针.
    赞同xhzhang6(zxh)
      

  7.   

    xhzhang6分析的比较准确,我赞同!
      

  8.   

    本人感觉:
    其实学计算机语言,关键是上机多练习,
    纸上谈兵,想当然,是学不通的!!!!!!!!!!
    我想这也是为什么做程序员不能太老,
    年龄大了,有很多乌七八糟的事情要做,
    没有太多时间和精力去整那些邪门和不规范的代码
    (在CSDN上经常有这样的案例)
      

  9.   

    建议搜索一下CString,在头文件中应该有关于LPCTSTR重载的说明