我有一个已有40行数据的文本文件。我想在文件的最后两行之前写入数据。我是c ++的新手。我在网上搜索并找到了很少的功能,比如fseek和seekp,但我没有得到那些功能如何改变线条。你能指点一下吗? 提前谢谢。
答案 0 :(得分:3)
std::ifstream
std::vector<std::string>
,其中包含文件中每行的条目(您可以使用std::getline()
和std::vector<std::string>::push_back()
方法来实现此目的。 std::ifstream
std::vector<std::string>::insert()
std::ofstream
在这种情况下,您不应该使用seek
函数;特别是,如果替换大小动态变化。
答案 1 :(得分:2)
你说的是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
}