Я думаю, что, вероятно, должен использовать объект fstream, но я не уверен как. По существу я хочу читать в файле в буфер байта, изменить его, затем переписать эти байты в файл. Таким образом, я просто должен знать, как сделать байт i/o.
У вас есть два варианта:
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();
Из памяти я думаю, что это так.
При выполнении файлового ввода-вывода вам нужно будет прочитать файл в цикле, проверяя на наличие конца файла и условий ошибки. Вы можете использовать приведенный выше код следующим образом:
while (fileBufferHere.good()) {
filebufferHere.getline(m_content, 1024)
/* Do your work */
}
Если вы имеете дело с небольшим размером файла, я рекомендую читать весь файл целиком. Затем поработать с буфером и снова записать весь блок. Здесь показано, как прочитать блок - при условии, что вы заполните открытый файл ввода/вывода сверху 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
..........