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

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 关于#stm32#的问题:寻找一块开发版,作为智能化割草机的控制模块和树莓派主板相连,要求:最低可控制 3 个电机(两个驱动电机,1 个割草电机),其次可以与树莓派主板相连电机照片如下:
  • ¥15 Mac(标签-IDE|关键词-File) idea
  • ¥15 潜在扩散模型的Unet特征提取
  • ¥15 iscsi服务无法访问,如何解决?
  • ¥15 感应式传感器制作的感应式讯响器
  • ¥15 如何使用SC92F8003固件库解析私有协议数据?
  • ¥15 如何在音频中嵌入字符串(水印)信息进行传递
  • ¥30 plc怎么以设计说明书申请软著
  • ¥15 硬盘识别不了,需要初始化,可我的数据怎么办
  • ¥15 lvm2被mask了,怎么unmask都没用(标签-ubuntu|关键词-apt)