У меня есть текстовый файл, который уже имеет 40 строк данных. Я хочу записать данные непосредственно перед двумя последними строками в файле. Я новичок в c++. Я искал в Интернете и нашел несколько функций, таких как fseek и seekp, но я не понимаю, как эти функции меняют линии. Не могли бы вы дать несколько указаний на это? Заранее спасибо.
std::ifstream
std::vector<std::string>
с записью для каждой строки в файле (вы можете использовать std::getline()
и std::vector<std::string>::push_back()
методы реализации этого).std::ifstream
std::vector<std::string>::insert()
std::ofstream
В этом случае вы не должны возиться с функциями seek
; в частности, нет, если размер замены изменяется динамически.
Вы говорите C++, поэтому я предполагаю, что вы имеете в виду это, а не C. FIFO приходит на ум для этой цели.
$ cat last_two_lines.c | ./a.out
#include <iostream>
#include <string>
#include <deque>
main ()
{
std::deque<std::string> fifo;
while (!std::cin.eof()) {
std::string buffer;
std::getline(std::cin, buffer);
fifo.push_back(buffer);
if (fifo.size() > 2) {
std::cout << fifo.front() << "\n";
fifo.pop_front();
}
}
std::cout << " // LINE INSERTED" << "\n";
while (fifo.size() > 0) {
std::cout << fifo.front() << "\n";
fifo.pop_front();
}
return 0;
// LINE INSERTED
}
TCHAR
глобальное определениеTCHAR
, если вы беспокоитесь об этом. Думаю, они автоматически переведут наstd::wstring
если это необходимо, или s.th. как это.