Считайте и запишите байты из файла (C++)

Я думаю, что, вероятно, должен использовать объект fstream, но я не уверен как. По существу я хочу читать в файле в буфер байта, изменить его, затем переписать эти байты в файл. Таким образом, я просто должен знать, как сделать байт i/o.

6
задан Sam 25 August 2014 в 18:39
поделиться

3 ответа

У вас есть два варианта:

  1. вручную указать идентификатор (это удаляет авто из автоприращения)
  2. TRUNCATE таблицы - это удалит все записи в таблице

Всегда плохая идея, чтобы повторно использовать "дыры", созданные путем удаления строк, это было отвечено ранее здесь в SO, но я слишком сонный сейчас, чтобы пойти и найти, что

-121--2711737-

Можно попробовать "ALTER TABLE t2 AUTO_INCREMENT = 1; '

-121--2711738-
#include <fstream>

ifstream fileBuffer("input file path", ios::in|ios::binary);
ofstream outputBuffer("output file path", ios::out|ios::binary);
char input[1024];
char output[1024];

if (fileBuffer.is_open())
{
    fileBuffer.seekg(0, ios::beg);
    fileBuffer.getline(input, 1024);
}

// Modify output here.

outputBuffer.write(output, sizeof(output));

outputBuffer.close();
fileBuffer.close();

Из памяти я думаю, что это так.

7
ответ дан 16 December 2019 в 21:39
поделиться

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

while (fileBufferHere.good()) {  
    filebufferHere.getline(m_content, 1024)  
    /* Do your work */  
}
0
ответ дан 16 December 2019 в 21:39
поделиться

Если вы имеете дело с небольшим размером файла, я рекомендую читать весь файл целиком. Затем поработать с буфером и снова записать весь блок. Здесь показано, как прочитать блок - при условии, что вы заполните открытый файл ввода/вывода сверху reply

  // open the file stream
  .....
  // use seek to find the length, the you can create a buffer of that size
  input.seekg (0, ios::end);   
  int length = input.tellg();  
  input.seekg (0, ios::beg);
  buffer = new char [length];
  input.read (buffer,length);

  // do something with the buffer here
  ............
  // write it back out, assuming you now have allocated a new buffer
  output.write(newBuffer, sizeof(newBuffer));
  delete buffer;
  delete newBuffer;
  // close the file
  ..........
1
ответ дан 16 December 2019 в 21:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: