fstream - заполнение указанного диапазона байт определённым значением

Рейтинг: 0Ответов: 1Опубликовано: 22.07.2023

Имеется файл размер 10 байт с таким содержимым:

0x54 0x54 0x54 0x54 0x54 0x54 0x54 0x54 0x54 0x54

Необходимо в 3-й, 4-й, 5-й и 6-й байты записать значение, к примеру, 0x4C, т.е. должно получиться вот так:

0x54 0x54 0x54 0x4С 0x4С 0x4С 0x4С 0x54 0x54 0x54

Если использовать метод fstream write(), то в качестве аргумента необходимо передавать ссылку на буфер, содержащий необходимые для записи данные.

А есть ли у fstream метод, в который можно передать 1 целевой байт и указать количество байт, в которые необходимо записать это значение? Т.е. как-то так:

my_file.seekp(3, std::ios::beg);
my_file.write_bytes((char*)"\x4C", 4);

Ответы

▲ 2

Не понимаю, чем так не нравится короткое и понятное

my_file.write("\x4C\x4C\x4C\x4C", 4);

но раз так, то вполне сработает

for(int i = 0; i < 4; ++i)
    my_file.write("\x4C", 1);

или

for(unsigned char x = 0x4C, i = 0; i < 4; ++i)
    my_file.write((const char*)&x, 1);

или даже

for(char x = 0x4C, i = 0; i < 4; ++i)
    my_file.write(&x, 1);