首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

VC++ 讀取超大數據檔案:CArchive 突破 64KB 限制

     編輯:VC 教學

問題由來

CSV 格式股票數據檔 (日期,開盤,最高,最低,收盤,成交量,成交金額) 需匯入四張表分析。CFile/CStdioFile 內部使用 Far 指標,單次讀寫限制 65535 位元組,超過即觸發 ASSERT 錯誤。

解決方案:CArchive 文字串流

CArchive 配合 CFile 以文字模式讀取,無 64KB 限制:

CFile srcFile; srcFile.Open(...);
CArchive ar(&srcFile, CArchive::load);
CString line;
while (ar.ReadString(line)) {
    if (line == "日期,開盤,最高,最低,收盤,成交量,成交金額" || line.IsEmpty())
        continue; // 跳過標題列
    // 逐欄位解析...
}

欄位解析範例

int nYear;
CString yearStr = line.Left(line.Find('年')); // 取「年」前字串
nYear = atoi(yearStr);
line = line.Right(line.GetLength() - line.Find('年') - 1); // 移除已解析部分

// 重複上述邏輯依次解析月、日、開盤、最高...
// 使用 Find(',') 定位逗號分隔,Left/Right 擷取子字串,atoi/atof 轉型。

優勢總結

  • 突破單次讀取 64KB 限制,支援任意大小文字檔。
  • ReadString 自動處理換行,逐行處理邏輯清晰。
  • 字串操作 (Find, Left, Right) 解析 CSV 直觀易維護。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved