小皮球飞呀飞 2018-05-30 06:35 采纳率: 100%
浏览 4167
已采纳

QT 查找文件中字符串并替换的问题

QT控制台程序,如果需要匹配的字符串在首行的话,无法完成替换。麻烦各位帮忙看看。打印出来的debug显示已经完成替换了,但是首行无法写入。其他行就完全没问题。。。。。。QT环境是QT5.11.0.。。。。谢谢

#include <QtCore/QCoreApplication>
#include <QFile>
#include <QTextStream>
#include <QTextCodec>
QString str,str2;
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QTextStream cin(stdin, QIODevice::ReadOnly);
    QTextStream cout(stdout, QIODevice::WriteOnly);

    QString strAll;
    QStringList strList;
    QFile readFile("F:/test.txt");
     if(readFile.open((QIODevice::ReadOnly|QIODevice::Text)))
    {
        QTextStream stream(&readFile);
        strAll=stream.readAll();
    }readFile.close();

    QFile writeFile("F:/test.txt");
    if(writeFile.open(QIODevice::WriteOnly|QIODevice::Text))
    {
       QTextStream stream(&writeFile);
       strList=strAll.split("\n");

       cout<<"input string"<<endl;
       cin>>str;

       cout<<"input string to replace"<<endl;
       cin>>str2;

       for(int i=0;i<strList.count();i++)
       {
                if(i==strList.count()-1)
                {
                    //最后一行不需要换行
                    stream<<strList.at(i);
                }
                else
                {
                    stream<<strList.at(i)<<'\n';
                }
               //cout<<strList.at(i)<<endl;

        strList.replaceInStrings(str,str2);
#if 0
           if(strList.at(i).contains(str))
           {

               //QString tempStr=strList.at(i);
               strList.replaceInStrings(str,str2);
               cout<<strList.at(i)<<endl;

               stream<<'\n';

               i++;
           }
#endif
       }
    }
       writeFile.close();
}
  • 写回答

1条回答 默认 最新

  • 枫舞的季节 2018-05-31 01:13
    关注

    strList.replaceInStrings(str,str2); 放到for循环外面就可以了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 stata空间计量LM检验
  • ¥15 NAO机器人说出txt文本内容
  • ¥15 关于k8s node节点被释放后如何驱逐节点并添加新节点
  • ¥15 subprocess.CalledProcessError: Command ‘[‘ninja‘, ‘-v‘]‘ returned non-zero exit status 1
  • ¥15 for循环处理大量数据怎么优化
  • ¥15 笔记本接显卡扩展坞重启报错
  • ¥15 为什么这个指令报错啊,一直弄不懂为什么,想问问该怎么弄,决求解决,ubuntu刚入手
  • ¥15 用百度飞将的paddleyolo库里的yolov7训练自己数据集
  • ¥15 Saber里如何查看磁芯的磁通密度
  • ¥25 关于下拉菜单、数据库、关联选项的问题