赞
踩
deleteOnelineInFile(3,QString(“c:\delline.txt”));
行号是从0开始计数
//如果是5行,nNum最大为4
void DeleteOneline(int nNum, QString &strall)//
{
int nLine=0;
int Index=0;
//算出行数nLine
while(Index!=-1)
{
Index=strall.indexOf('\n',Index+1);
nLine++;
}
//如果是直接从位置0开始删除\n算一个字符"abc\nme\ndo" \n的index是3要删除3+1个字符,即index+1个
if(nNum==0)
{
int nIndex=strall.indexOf('\n');
strall.remove(0,nIndex+1);
}
else
{
int nTemp=nNum;
int nIndex=0,nIndex2=0;
while(nTemp--)
{
//
nIndex=strall.indexOf('\n',nIndex+1);//这里会更新nIndex
if(nIndex!=-1)//说明是有效的
{
nIndex2=strall.indexOf('\n',nIndex+1);
}
}
//删除的行不是最后一行(从nIndex+1这个位置起nIndex2-nIndex个字符全部抹去)
if(nNum<nLine-1)
{
strall.remove(nIndex+1, nIndex2-nIndex);//不用减一
}
//删除的是最后一行(从nIndex起始len-nIndex个字符全抹去)
//不能从nIndex+1处开始,
else if(nNum==nLine-1)
{
int len=strall.length();
strall.remove(nIndex,len-nIndex);
}
else
{
}
}
}
void deleteOnelineInFile(int nNumLine, QString &filename)
{
QString strall;
QFile readfile(filename);
if(readfile.open(QIODevice::ReadOnly))
{
QTextStream stream(&readfile);
strall=stream.readAll();
}
readfile.close();
DeleteOneline(nNumLine, strall);
QFile writefile(filename);
if(writefile.open(QIODevice::WriteOnly))
{
QTextStream wrtstream(&writefile);
wrtstream<<strall;
}
writefile.close();
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
//QFile file("c:\\delline.txt");
deleteOnelineInFile(3,QString("c:\\delline.txt"));
return a.exec();
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。