изменение небольшой части существующего файла - PullRequest
0 голосов
/ 27 августа 2010

Я посмотрел на mapped_file boost и CreateFileMapping / MapViewOfFile, но они кажутся слишком сложными в использовании.

Что-нибудь проще, я могу использовать, чтобы перезаписать несколько байтов здесь и там в существующем файле? Производительность не очень высокая оценка.

Ответы [ 2 ]

1 голос
/ 27 августа 2010

Вы можете напрямую использовать стандартную библиотеку C. fopen затем fseek туда, где вы хотите что-то написать. Или, если вы хотите быть модным, вы также можете попробовать mmap .

0 голосов
/ 27 августа 2010

Примерно так (непроверено, и вы также должны проверить коды ошибок HRESULTS):

CAtlFile f;
f.Create( L"MyFile.txt", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, OPEN_ALWAYS );

CAtlFileMapping<BYTE> map;
map.MapFile( f , 0, 0, PAGE_READWRITE, FILE_MAP_ALL_ACCESS );

printf( "%d bytes\n", (int)map.GetMappingSize() );

// Overwrite the 3-rd byte with 21
map[2] = 21;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...