sLineContent.TrimRight();
sLineContent=sLineContent.Right(1);    
    if (sLineContent)    //<-----------------------
    {
        ofile <<sLineContent<<"\n";
     }

解决方案 »

  1.   

    同意XLB2000()的说法!
     cmoth (容量够大)  的错误在于哪里是一目了然了的!
      

  2.   

    你要判断字符串是否为空,可以用CString::IsEmpty(),或者CString::GetAt(length)。在DOS时代常常自己找结尾的0来判断字符串,现在有很多可以用的类了。另外你可以继承CString,然后写一些你自己能用得上的成员函数。关于CString::Right(),你仔细看看MSDN吧!
      

  3.   

    XLB2000() (  ) #include <afx.h>
    #include <iostream.h>void main()
    {
    CString s("jgkghkhk      ");
    s.TrimRight (" ");
    cout <<s<<endl;
    cout <<s.Right(1)<<endl;
    if (s.Right (1)!="k") 
    cout <<"gkhkhk"<<endl;
    }以上s.Right(1)返回的指就是对的,另外我是要删除行结尾是;号的行,你改的好像并不是我要求的,请帮忙再看看。主要是什么原因会导致Right出错?
      

  4.   

    对不住,才发现标注行错了,应该是这样:
    if (sLineContent.Right(1)!=";")
    请大家再看看
      

  5.   

    to 楼上兄弟
    你刚才贴的例字当然是正确的
    s.Right (1)!="k" 这是判断的返回值而非s本身Right操作并不修改本身,只是返回一个字符串而已
      

  6.   

    ydogg(灰毛兔频频) (  )
    对啊!但为什么在最上的那个程序里
    if (sLineContent.Right(1)!=";")
    语句sLineContent.Right(1)返回值就不对呢?哎.........yum
      

  7.   

    #include <afx.h>
    #include <iostream.h>
    #include <fstream.h>void main(int argc,char *argv[])
    {
    CString  sLineContent;
    CString sss;
        TCHAR szPathOrig[_MAX_PATH], szPathClone[_MAX_PATH];
    if (argc==2)
    {
    strcpy(szPathOrig,argv[1]);
        ofstream ofile(szPathOrig,ios::app);
    GetTempPath(_MAX_PATH, szPathClone);
    GetTempFileName(szPathClone, __TEXT("gzz"), 0, szPathClone); 
    if (0==CopyFile(szPathOrig, szPathClone, FALSE))
    return;
    ifstream tempfile(szPathClone);
    while (0==tempfile.eof())
    {
    tempfile.getline ((LPSTR)(LPCTSTR)sLineContent,_MAX_PATH);
    sLineContent.TrimRight(" "); cout <<"sLineContent:\"" <<sLineContent<<"\""<<endl;
    cout <<"sLineContent.Right(1):\"" <<sLineContent.Right(1)<<"\""<<endl;

    if (sLineContent.Right(1)!=";")
    {
    ofile <<sLineContent<<"\n";
    }
    }
    }
    }
    可以试试这段程序,结果就是不对啊!
      

  8.   

    这样试一下:
    if(sLineContentRight(1)!=_T(";")
    {
        ....
        ....
    }
      

  9.   

    是这样:
    if(sLineContentRight(1)!=_T(";"))
    {
    ...
    }
      

  10.   

    // tempfile.getline ((LPSTR)(LPCTSTR)sLineContent,_MAX_PATH);
    改成
    char buf[1024];
    tempfile.getline (buf,1024);
    sLineContent = buf;
    即可象tempfile.getline ((LPSTR)(LPCTSTR)sLineContent,_MAX_PATH);
    这样的用法根本就是错误的,你跟进源码看看就明白了
      

  11.   

    ahao(天·狼·星星)确实,谢谢你了,hoho