麻烦哪位高手帮我把文本文件中的5行中的“xxxxx”替换成“123456789123456789123456789”,不要覆盖下一行的文本。然后用@替换"123456789123456789123456789”中的第6位,然后将指针移到行尾。
急求实现代码,顺便解答一下我的代码后面注释得问题,谢谢。
我的基本思路是readstring读一行,替换或插入等处理当前行数据,再writestring写入文件(不能影响覆盖下一行),将指针移动到下一行,继续轮询读>处理>写。
不想把整个文件都放入数组处理后删除原来文件的再重生成新文件的方法。
刚才网友说:没法实现,总之,这个问题我多留几天,最后选最优的代码(包括删了文件再重写)
另外:我虽然是新手,但是目前为止我提的所有问题都会把分给网友,不管有没有解决问题,最后只要我觉的有帮助,就会把分给我的感觉最有帮忙的。非常感谢大家百忙中能抽时间解答我的疑惑。
更改前的文件
99999
99999
xxxxx
99999
99999
要求更改后的文件
99999
99999
12345@789123456789123456789
99999
99999
下面是我写的代码,在插入"123456789123456789123456789”后总是会覆盖下一行。
while(file.ReadString(strText))
{
int dwPosStart = (DWORD)file.GetPosition() - (_tcslen(strText) + _tcslen(_T("\r\n")));//当前的行头。
if(strText.Find("xxxxx")>=0) //判断当前行是否存在xxxxx
{
file.Seek((dwPosStart), CFile::begin); //seek到行首
file.WriteString("123456789123456789123456789\r\n"); //从行头写入一串字符串,这里如何避免覆盖下一行?只覆盖当前行,指针如何返回行尾?
file.Seek(dwPosStart+5, CFile::begin); //seek到行首+5的位置
file.WriteString("@"); //将@行中插入代替6,
CString strTest;
//file.ReadString(strTest);//这里我想用readstring把指针移到行尾,但是反而把文件给改写了,为啥read能改文件数据?
file.Close();
break;
我的代码最后生成了这些,writestring和readstring连用后,readstring改变了文件内容!!!
99999
99999
12345@3456789123456789123456789