首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

VC++ 6.0 文本檔逐行讀取並支援回溯:一次性讀入 vector 隨機存取

     編輯:程式設計疑難解答

問題

getline 單向前進,無法「回到上一行」。

解決方案:全量讀入記憶體

#include <vector>
#include <string>
#include <fstream>
using namespace std;

vector lines;
ifstream fin("data.txt");
string line;
while (getline(fin, line)) {
    lines.push_back(line);
}
fin.close();

// 隨機存取
string line5 = lines[4];      // 第 5 行 (0-based)
string prev = lines[current - 1]; // 回溯上一行

MFC CStdioFile 版本

CStringArray arr;
CStdioFile file;
file.Open(_T("data.txt"), CFile::modeRead);
CString str;
while (file.ReadString(str)) arr.Add(str);
file.Close();

// 存取
CString line = arr.GetAt(nIndex);

大檔案處理

  • 若檔案 > 可用記憶體,使用**記憶體映射檔** (mmap/CreateFileMapping) 或**分塊索引**(記錄每行起始偏移量)。
  • 隨機存取需求頻繁 → 考慮 SQLite / LevelDB 等嵌入式資料庫。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved