.txt 檔處理

  1. .txt 檔處理

.txt 檔處理

原文連結: https://darkblack01.blogspot.com/2012/02/txt.html
移植時的最後更新日期: 2012-02-17T00:38:10.411+08:00

在.xls(Excel檔)裡,有一格一格的
在.csv裡用\t和\n可以讓它一格一格的,x軸和y軸都可以定位
同理
在txt檔和.csv檔骨子裡是一樣的,不一樣的是打開的工具

而今天,我們用MFC來開
如何coding來開這個東西呢??(至少要能讀.txt檔吧?)




先貼兩串code上來看


CString CTxtFile::GetLine(UINT Num)
{
    CString strBuf1;
    CString strBuf2;
    strBuf1.Format("%s", pbuf);
    UINT lBegin = 0, lLength = 0;
    for (UINT i = 0; i < Num; ++i)
    {
        lLength = strBuf1.Right(strBuf1.GetLength() - lBegin).Find("\n");
        if (lLength == -1)          
            return “超過檔案大小”;
        strBuf2.Format("%s", strBuf1.Mid(lBegin, lLength));
        strBuf2.TrimRight();
        lBegin = lBegin + lLength + 1;
    }
    if (strBuf2.IsEmpty())
        strBuf2.Format("(內容空白)");
    return strBuf2;
}




CString CTxtFile::GetCell(UINT Word, UINT Line)
{
    CString  strBuf1;
    CString  strBuf2;
    strBuf1 = GetLine(Line);
    if (!strBuf1.IsEmpty())
    {
        UINT wBegin = 0, wLength = 0;
        for (UINT i = 0; i < Word; ++i)
        {
            wLength = strBuf1.Right(strBuf1.GetLength() - wBegin).Find("\t");
            strBuf2.Format("%s", strBuf1.Mid(wBegin, wLength));
            strBuf2.TrimRight();
         
            wBegin += wLength + 1;
        }
    }
    if (strBuf2.IsEmpty())
        strBuf2.Format("(內容空白)");
    return strBuf2;
}

字串 > 子字串 > 小字串

GetLine(),不是一般使用介面,設成private,也可以設計成public
是用來得到一行,也就是用\n切斷文章,成為一串串的子字串。
CString::TrimRight()的目的是去掉右邊的空白、\n、\t(在這裡主要去掉\t和空格)
(相對的也有左邊版本)
GetCell()是一般使用的介面,設成public
填入座標,以\t介定x方向的格式,以\n介定y方向的格子。
就可以任意的處理txt檔,取出任意的小字串

小字串可以使用
CString::Left()、CString::Mid()、CString::Right()
做細部的處理。