文本文件内容类似为:
MN: 33 44;
WE: 55 66;
AB: 10;
......
我用
         CString str1,str2;
CStdioFile file;
file.Open("D:\\aaa.txt",CFile::modeRead);
while(file.ReadString(str2))
{

}
file.Close();
读出每行的值
现在我要对每行的值进行比较
但是比较只比较前面几个字母(比如MN、WE、AB)
不和后面的数字进行比较。
该怎么办呢???是不是用(file.ReadString(str2))不可以?
该用撒呢?

解决方案 »

  1.   

    用ReadString没问题
    然后如楼上的用if(str1.Left(x) == str2)就可以也可以用 if(_tcsncmp(str1, str2, x) == 0)判断
    后者效率要高很多
      

  2.   

    对冒号两边分别比较...str.find(':');
    str.left();
    str.right();-----
    当然前提是每行字母和数字都只用:分开的
      

  3.   

    字母和数字分开了
    还读取不了数字?------left()后
    right()就得到了:右边的
    不知道源数据里最后是不是有分号.?1.有的再Find()下
    2.没有的话,你就可以直接把数据GetAt()到一个数组,不就得到了----
    int     index;
    int     num;
    int     data[100];  //数组要足够大.. 最好用动态的;
    CString strLeft;
    CString tempStr;index = str.Find( ':' );
    if ( index < 0 )
    break;strLeft = str.Left( index );  //用于字符串的比较
    tempStr = str.Right( str.GetLenth() - index - 1 );
    num = tempStr.GetLenth();for ( int i = 0; i < num; i++ )
    {
       data[i] = temStr.GetAt( i );
    }-------仅提供了个方法..
      

  4.   

    我用了上面的代码
    得不到正确的结果
    例如:我的是
    M03 55 66
    我把上面代码的 index = str.Find( ':' );改为index = str.Find(' ');
    单步调试显示index=3;num=5;
    tempStr和strLeft的值也正确
    但是在data[i] = temStr.GetAt( i );时
    老是得到data[i]=53这是怎么回事?
      

  5.   

    哦,刚才看了下
    是我有个地方搞错了不过得到的是ASCII码值····