文件名 city.txt文件内容
city1      192.168.2.3
city2      192.168.2.6
city1233    192.0.0.5
city34     192.125.1.2.3
///////////////////////////////////////
怎么把它读入后放入  CStringArray m_CityName;CStringArray m_CityIp;然后我在listctrl中显示,相当于是数据库。

解决方案 »

  1.   


    BOOL CCityManger::ReadFile()
    {
    int nFilesize;
    char *lpBuffer;
        char filename[10];

    strcpy(filename,"city.txt");
    //打开文件
    if( !In.Open(filename, CFile::modeCreate|CFile::modeNoTruncate|CFile::modeRead) )
    {
    AfxMessageBox( "不能打开文件 city.txt!" );
    return  FALSE;
    }
        //建立缓冲区
    lpBuffer = new char [30];
    if( lpBuffer == NULL )
    {
    AfxMessageBox( "不能创建缓冲区!" );
    return  FALSE;
    }
        //得到文件状态
    CFileStatus rStatus;
    In.GetStatus(filename, rStatus );
        //得到文件大小
        nFilesize = In.GetLength();

    while( nFilesize > 0 )
    {
    int nSize = 30;
    if( nSize > nFilesize )
    nSize = nFilesize;
    try
    {
    In.Read( lpBuffer, nSize );//这里不知怎么处理
                      m_CityName=           //
                      m_CityIp=             //  }
    catch( CFileException *e )
    {
    char *lpMsgBuf;
    if( FormatMessage(
    FORMAT_MESSAGE_ALLOCATE_BUFFER |
    FORMAT_MESSAGE_FROM_SYSTEM,
    NULL, e->m_lOsError,
    MAKELANGID( LANG_NEUTRAL,
    SUBLANG_DEFAULT ),
    (LPSTR) &lpMsgBuf, 0, NULL ) > 0 )
    {
    AfxMessageBox( lpMsgBuf );
    LocalFree( lpMsgBuf );
    }
    return  FALSE ;
    }

    nFilesize -= nSize;
    }//end while

    delete [] lpBuffer;
    return TRUE;
    }谁能帮我改一下
      

  2.   

    使用CStdioFile,然后file.ReadString(str)读入每一行,再操作字符串就可以了
      

  3.   

    判断0x0d,0x0a(回车换行)
    \t 等应该可以了
      

  4.   

    to kingzai 
      有 CStdioFile 的完整例子没有, 帮助上只有,打开,读,至于,其他细节,一概没有(怎么知道有几行,怎么知道文件结束。)
      

  5.   

    我还没有写数据到该文件。我想是
    从listctrl中取数据到CStringArray m_CityName;CStringArray m_CityIp;
    然后 
    for( int i=0; i<m_CityName.GetSize(); i++ )
    {
       CString cityname = m_CityName.GetAt( i );
       CString cityip   = m_CityIp.GetAt( i );
       CString temp;
       temp=cityname +"   "+cityip;
       ......//然后把temp 写到city.txt 中
       //city.txt 中换一行。
    }
      

  6.   

    //my example:
    CStdioFile Source_File;
    if (!Source_File.Open(strFile,CFile::modeReadWrite|CFile::shareDenyNone, &e))
        {
    AfxMessageBox("不能打开该文件");
    }
    // if(!Dest_File.Open(pApp->m_strUABPath+"\\Common\\Com.bmc",CFile::modeCreate|CFile::modeReadWrite))
    // AfxMessageBox("不能打开该文件");
    else
    {
    nLength=Source_File.GetLength();
    CString str;
    while(Source_File.ReadString(str))
    {
    //读取一行字符串
    str.TrimLeft();
    str.TrimRight();
    str+=" ";
    if(str.GetLength()!=0)
    {
    int n=str.Find(" ",1);//找到第一个空格,并把返回值赋给n
    Comm_Name=str.Left(n);//把空格以前的字符赋给Comm_Name
    Comm_Name.TrimLeft();
    Comm_Name.TrimRight();
    str.TrimLeft();
    str.TrimRight();
    str+="\n";
    if(Comm_Name==strCommName)
    {
    if(strBmp!="")
    {

    pbuf=strCommName+" "+strBmp+"\n";
    }
    // else
    // pbuf=strCommName+" "+pApp->m_strUABPath+"\\Bmp\\IDB_SMALL_DEFAULT_EVNT.bmp"+"\n"; }
    else
    pbuf=str;
    }
    else 
    pbuf=str;
    Filebuf+=pbuf;
                                       //here add your code
    } Source_File.Close();

    }
      

  7.   

    怎么中文就不行了
    武汉 192.168.2.3
    int n=str.Find(" ",1);//找到第一个空格,并把返回值赋给n
    Comm_Name=str.Left(n);//它怎么就Find 找不到了