[英]Reading large mapped text file in C++
我正在嘗試顯示大量文本(幾乎不到1GB)。 我的代碼:
HANDLE hFile;
DWORD dwBytesRead = 0;
OVERLAPPED ol = {0};
HANDLE m_hMapFile;
hFile = CreateFile(_T("test.txt"),
GENERIC_WRITE | GENERIC_READ,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
NULL);
m_hMapFile = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, 0, NULL);
LPVOID m_lpMapAddress = MapViewOfFile(m_hMapFile, FILE_MAP_ALL_ACCESS, 0,
0, 0);
}
現在已經映射了文本文件,如何顯示其內容? 我嘗試了以下(較差)的實現:
char *mappedData = (char*)m_lpMapAddress;
for(int k = 0; k < strlen(mappedData); k++){
cout<<mappedData [k];
}
這顯然不是顯示文本內容的正確方法。 有沒有更有效的方法?
您可以嘗試一次完成所有輸出:
cout.write(mappedData, mappedSize);
但是請注意,無論如何,將千兆字節的數據打印到控制台都不是有效的方法。
控制台輸出的目的是被用戶讀取(編程分析是次要的事情)。 您希望用戶讀取1 GB的數據嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.