我的文件名为By_a_waterfal.txt,内容如下:
By a waterfal I'm calling you.
We can share it all beneath a ceiling of blue.
We'll spend a heavenly day
Here where the whispering waters play.
我通过调用函数来创建此文件的内存映射:
HANDLE hFileMapping = CreateFileMapping(handleOfFile, NULL, PAGE_READ, 0, 0, NULL);
其中handleOfFile是By_a_waterfal.txt文件的句柄。 然后我做以下的电话:
LPVOID lpFileMap = MapViewOfFile(hFileMapping, FILE_MAP_READ, 0, 0, 0);
如何通过使用MapViewOfFile调用创建的视图访问内存映射By_a_waterfal.txt文件的内容?
答案 0 :(得分:1)
如果你真的必须使用内存映射而不是std :: ifstream,那么:
1)检查lpFileMap是否为NULL。
2)获取视图大小为GetFileSize(handleOfFile)或VirtualQuery(lpFileMap)。
3)如果文件具有ANSI编码(非Unicode),则将lpFileMap强制转换为char *并继续(不要忘记没有0终结符)
auto data = static_cast<const char*>(lpFileMap);
std::string strData(data, size);
std::cout << stdData;
答案 1 :(得分:0)
lpFileMap
是指向内容的指针。如果您希望内容为const char*
,请将其投射:
const char* content = static_cast<const char*>(lpFileMap);