我正在尝试显示大量文本(几乎不到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];
}
这显然不是显示文本内容的正确方法。有没有更有效的方法?
答案 0 :(得分:0)
您可以尝试一次完成所有输出:
cout.write(mappedData, mappedSize);
但是请注意,无论如何将千兆字节的数据打印到控制台上都是不可能的。
控制台输出具有被用户读取的目的(编程分析是次要的事情)。您希望用户读取1 GB的数据吗?