a/c cho e gợi ý với ạ.
e đang học về file nhưng muốn ghi thêm 1 dòng sau một dòng bất kì của file txt thì nên làm thế nào ạ. e chỉ biết thêm vào cuối file thôi.
e cảm ơn nhiều.
Hỏi về thêm dữ liệu vào file trong c++
1/ Get index của char cuối của row bạn cần insert.
2/ Gọi hàm insert như khi insert cuối file nhưng chèn thêm index ở 1.
bạn có thể nói rõ hơn không ạ? mk chưa hiểu lắm.
Đọc ra hết > thay đổi theo ý bạn > ghi lại.
vâng, mình cảm ơn nhiều ạ!
nếu không phải ở cuối file thì bạn chỉ có thể ghi đè, nếu bạn xài c++ thì có thể xài seekp
bạn có thể nói rõ hơn đc ko ạ?
Mình nghĩ bạn nên đọc cả file lên chỉnh sửa rồi ghi lại sẽ tốt hơn.
Đây là code demo ghi đè, file in.txt có nội dung:
0123456789
Ghi bình thường:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
fstream fout("in.txt");
if (!fout.is_open())
return 1;
fout.seekp(5, ios_base::beg);
fout << "abcdefghiklm";
fout.close();
return 0;
}
Ghi nhị phân:
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
fstream fout("in.txt", ios::binary|ios::in|ios::out);
if (!fout.is_open())
return 1;
fout.seekp(5, ios_base::beg);
fout.write((char*)&"abcdefghiklm",12);
fout.close();
return 0;
}
file in.txt sau khi ghi theo cả hai cách:
01234abcdefghiklm
Vấn đề là ntn: ở text mode sẽ có các phép chuyển đổi nên tellg
và seekg
sẽ không ăn khớp nhau trên Windows. Đọc hết cho đỡ đau đầu
Đọc hết file và đếm \n =>> ra dòng cần thêm
mk chưa hiểu rõ về seekp nên mình đọc và ghi sang một file khác để sửa