QT 删除文件的某一行

超、凢脫俗 2022-06-13 11:09 1057阅读 0赞

deleteOnelineInFile(3,QString(“c:\delline.txt”));
行号是从0开始计数

  1. //如果是5行,nNum最大为4
  2. void DeleteOneline(int nNum, QString &strall)//
  3. {
  4. int nLine=0;
  5. int Index=0;
  6. //算出行数nLine
  7. while(Index!=-1)
  8. {
  9. Index=strall.indexOf('\n',Index+1);
  10. nLine++;
  11. }
  12. //如果是直接从位置0开始删除\n算一个字符"abc\nme\ndo" \n的index是3要删除3+1个字符,即index+1个
  13. if(nNum==0)
  14. {
  15. int nIndex=strall.indexOf('\n');
  16. strall.remove(0,nIndex+1);
  17. }
  18. else
  19. {
  20. int nTemp=nNum;
  21. int nIndex=0,nIndex2=0;
  22. while(nTemp--)
  23. {
  24. //
  25. nIndex=strall.indexOf('\n',nIndex+1);//这里会更新nIndex
  26. if(nIndex!=-1)//说明是有效的
  27. {
  28. nIndex2=strall.indexOf('\n',nIndex+1);
  29. }
  30. }
  31. //删除的行不是最后一行(从nIndex+1这个位置起nIndex2-nIndex个字符全部抹去)
  32. if(nNum<nLine-1)
  33. {
  34. strall.remove(nIndex+1, nIndex2-nIndex);//不用减一
  35. }
  36. //删除的是最后一行(从nIndex起始len-nIndex个字符全抹去)
  37. //不能从nIndex+1处开始,
  38. else if(nNum==nLine-1)
  39. {
  40. int len=strall.length();
  41. strall.remove(nIndex,len-nIndex);
  42. }
  43. else
  44. {
  45. }
  46. }
  47. }
  48. void deleteOnelineInFile(int nNumLine, QString &filename)
  49. {
  50. QString strall;
  51. QFile readfile(filename);
  52. if(readfile.open(QIODevice::ReadOnly))
  53. {
  54. QTextStream stream(&readfile);
  55. strall=stream.readAll();
  56. }
  57. readfile.close();
  58. DeleteOneline(nNumLine, strall);
  59. QFile writefile(filename);
  60. if(writefile.open(QIODevice::WriteOnly))
  61. {
  62. QTextStream wrtstream(&writefile);
  63. wrtstream<<strall;
  64. }
  65. writefile.close();
  66. }
  67. int main(int argc, char *argv[])
  68. {
  69. QCoreApplication a(argc, argv);
  70. //QFile file("c:\\delline.txt");
  71. deleteOnelineInFile(3,QString("c:\\delline.txt"));
  72. return a.exec();
  73. }

原地址:
http://download.csdn.net/download/niuxuexin/4353803

发表评论

表情:
评论列表 (有 0 条评论,1057人围观)

还没有评论,来说两句吧...

相关阅读