void CBillhandleDlg::OnButtonA()
{ HANDLE hFile;   
 DWORD nBytes;     
 
char line[1024]={0},ch;
int i=1; 
  hFile = CreateFile(("E://代码//1.txt"),GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_ALWAYS,0,NULL);    
if( hFile != INVALID_HANDLE_VALUE )    
{        BOOL bResult;       
bResult = ReadFile(hFile, line,sizeof(line),&nBytes,  NULL) ;  
                         for (;i<sizeof(line);i++)
                         {                             if (line[i]=='|'&&i==1||line[i]=='|'&&i==3)
                             { hFile = CreateFile(("F://2.txt"),     
GENERIC_WRITE, FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,0,NULL );
 i++;
 WriteFile( hFile, line, sizeof(line)-1, &nBytes, NULL );
             }
                         }
 
}
1.txt:qw|ww|ee|rr|tt|yy|
       ss|dd|ff|www|erer|ww|
       .......
代码如上我想把1.txt的每条数据的第二个和第三个分割线中间的字符和第五个跟第六个分割线中间的字符提取出来写入到另一个文件里面。但是判断不出来。。求大神帮忙 非常感谢!!

解决方案 »

  1.   

    CString::Find
    CString::Midstd::string::find
    std::string::substr
      

  2.   

    E://代码//1.txt
    //应该改为\\
      

  3.   

    1.每一次取一行, CStdioFile::ReadString
    2.找位置,截取, CString::Find, CString::Mid
      

  4.   

    参考两个函数:
    (1)C函数
    strtok
    (2)MFC CString成员函数
    Tokenize
      

  5.   


    TCHAR line[] = {_T("qw|ww|ee|rr|tt|yy|")};
    int barIdx = 0;
    int subStart = 0;
    BOOL bPrint = FALSE;
    for (int i = 0; line[i] != (TCHAR)'\0'; i++)
    {
    if (line[i] == (TCHAR)'|')
    {
    barIdx++;
    }
    else if (bPrint)
    {
    wcout << line[i];
    }
    if (barIdx == 2 || barIdx == 5)
    {
    subStart = i;
    bPrint = TRUE;
    }
    else if (barIdx == 3 || barIdx == 6)
    {
    bPrint = FALSE;
    }
    }自己写也是可以的,简单写了下。