我用ODBC读取一个字段为char(20)的值,m_read.GetFieldValue((short)0,str);str为CString.读也读出来了,但是它明明等于"qwqw",为什么我会说明明等于呢?,我是用MessageBox(str)看的,但是如果这样
if(str=="qwqw")
{
MessageBox(ok);
}这句就是不执行.我先以为有空格,但是通过手段排除了这个可能.我算是服了.

解决方案 »

  1.   

    不用CString类,MFC的东西有时真搞不懂。
    实在要用,查一查CString的重载操作符==的实现代码,也可这样试试if(str==T("qwqw")){}
      

  2.   


    str.getBuffer(str.GetLenth())试试?
      

  3.   

    晕,还是不行,看来是CString的bug了
      

  4.   

    你那个字段是CHAR还VARCHAR.类型(MSSQL)
    CHAR是后面加了空格."qwqw           "
    VARCHAR没有加"qwqw".
    其它数据库也有这种情况.
    你这样:
    str.TrimRight();
    if( str == "qwqw")
    再试试
      

  5.   

    楼上,我说了我已经通过手段排除了这种可能性.不过补充一句.虽然直接用==不行,但用strcmp()确能够判断