赞
踩
示例:
deleteOnelineInFile(1,"./test");//参数,删除第几行(从0开始数),文件名
完整代码示例:
- void ResManageObject::deleteOnelineInFile(int iNumLine, const QString sFilename)
- {
- QString sTemp;
- QFile f(sFilename);
- if(f.open(QIODevice::ReadWrite))
- {
- QTextStream in(&f);
- sTemp=in.readAll();//注:这里读出来的字符串每行后面都有个隐藏的转行符\n,qDebug打印出来的时候看不出来,只是换行了,后续我们就是根据这个转行符来进行判断删除的
- }
- f.close();
- DeleteOneline(iNumLine,sTemp);
-
- QFile writeFile(sFilename);
- if(writeFile.open(QIODevice::WriteOnly))
- {
- QTextStream wrtStream(&writeFile);
- wrtStream<<sTemp;
- }
- writeFile.close();
- }
- void ResManageObject::DeleteOneline(int iNum, QString &str)
- {
- int iAllLine=0;
- int index=0;
- //算出行数iAllLine
- while(index!=-1)
- {
- index=str.indexOf('\n',index+1);
- iAllLine++;
- }
-
- //如果是直接从位置0开始删除,\n算一个字符,比如要删除的一行有3个字母,加上转行符就是3+1,也就是index+1
- if(iNum==0)
- {
- int iPreIndex=str.indexOf('\n');
- str.remove(0,iPreIndex+1);
- }
- else
- {
- int iTemp=iNum;
- int iPreIndex=0,iNextIndex=0;
- //计算出要删除行的前一个转行符iPreIndex的位置及后一个转行符iNextIndex的位置
- while(iTemp--)
- {
- iPreIndex=str.indexOf('\n',iPreIndex+1);
- if(iPreIndex!=-1)
- {
- iNextIndex=str.indexOf('\n',iPreIndex+1);
- }
- }
- //删除的行不是最后一行(从iPreIndex+1这个位置起iNextIndex-iPreIndex个字符全部抹去)
- if(iNum<iAllLine-1)
- {
- str.remove(iPreIndex+1, iNextIndex-iPreIndex);//不用减一
- }
- //删除的是最后一行(从iPreIndex起始len-iPreIndex个字符全抹去)
- else if(iNum==iAllLine-1)
- {
- int len=str.length();
- str.remove(iPreIndex+1,len-iPreIndex);
- /*注:这里一定要加1,不然你试试从1一直删除,
- 然后再多删几次之后,换成删除第0行,
- 你会发现删不掉了文件中的第一行数据了*/
- }
- }
- }
补充说明:
一、如果想查明一个字符串是否包含一个特定的字符、子串、或正则表达式,可以使用QString中的indexOf()函数,函数原型如下:
- int QString::indexOf (
- const QString & str,
- int from = 0,
- Qt::CaseSensitivity cs = Qt::CaseSensitive ) const
示例:第一个出参数是要查找的内容,第二个参数是查找的起始位置,从0开始数。
- QString x = "sticky question";
- QString y = "sti";
- x.indexOf(y); // returns 0
- x.indexOf(y, 1); // returns 10
- x.indexOf(y, 10); // returns 10
- x.indexOf(y, 11); // returns -1
二、删除字符串中的内容用remove(i,n),表示从第几个位置(从0开始数)开始,删除n个字符(从1开始数)。
- QString s = "Montreal";
- s.remove(1, 4);
- // s == "Meal"
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。