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();
}
0

1个回答

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

1
m0_37154850
小皮球飞呀飞 回复weixin_44505659: 不好意思,现在才看到,应该是你写的问题,条件编译"if 0"去掉应该是可以的,还有就是你要是用contains的话,建议使用正则表达式,这样的话可以比较好,Qregularexpression ~
6 个月之前 回复
weixin_44505659
weixin_44505659 回复小皮球飞呀飞: 不是同时包含G02和CR也替换了,这是为什么?求教,拜托了
7 个月之前 回复
weixin_44505659
weixin_44505659 回复小皮球飞呀飞: strList.replaceInStrings("G02","G12"); #if 0 if(strList.at(i).contains("CR")&& strList.at(i).contains("G02")) { //QString tempStr=strList.at(i); strList.replaceInStrings("G02","G12"); cout<<strList.at(i)<<endl; stream<<'\n'; i++; } #endif
7 个月之前 回复
m0_37154850
小皮球飞呀飞 回复weixin_44505659: debug调试看一下结果~应该是IO读写文件的问题,之前有碰到过
7 个月之前 回复
weixin_44505659
weixin_44505659 回复小皮球飞呀飞: 我运行后为什么是空白的文档?
7 个月之前 回复
m0_37154850
小皮球飞呀飞 谢谢老哥了,刚刚接触QT对一些东西的使用还是很差劲,非常感谢!!!
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Linux查找文件夹下文件中字符串及替换字符串
一、grep: 1、grep是Linux下搜索文件文本的工具,能使用正则表达式搜索文本,并把匹配的文本所在位置打印下来。 2、使用格式:grep [OPTION]... PATTERN [FILE]... [OPTION]常用参数: -n或 --line-number 打印所在行数编号 -r 或 --recursive 等同于 --directories...
shell替换文件内某个字符串
数据库中有些时间的字段为月-日没有年。这将导致今年结束后,明年会出现日期难以对账的问题。为了匹配,可以在脚本中把年份加上去。 sed -i s/'0420'/'20180420'/g `grep '0420' -rl a.sql ` 通过这句话,即可将0420替换为20180420 解释: sed: -i表示对文件操作,` `表示将grep 的结果作为操作文件 s/'0420'/'2...
ubuntu下文档中查找并替换字符串举例
find /home/HBG/SegNet/CamVid -name test1.txt | xargs sed -i 's#/SegNet/CamVid/#/home/HBG/SegNet/CamVid/#g'将路径/home/HBG/SegNet/CamVid下的文档test1.txt中的字符串 /SegNet/CamVid/ 替换为 /home/HBG/SegNet/CamVid/注:1.#
awk条件查找字符串并进行替换
file 222.247.0.0/18,222.247.0.0/17,222.247.0.0/13,222.247.0.0/14 123.46.0.0/19,123.46.0.0/17,123.46.0.0/13,123.46.0.0/14 要求:查找每行当中最大的那个数字,然后在最前面加上*号。 处理 awk -F',' '{for(i=1;i 解析: 首先要找到最大值,m存取的是
C++:查找字符串字串并替换
https://zhidao.baidu.com/question/497175897.html int main(){ string a;/////指定串,可根据要求替换 string b;////要查找的串,可根据要求替换 string c; cin&amp;gt;&amp;gt;a&amp;gt;&amp;gt;b&amp;gt;&amp;gt;c; int pos; pos = a.find(b);////查找指定的...
标题 QT中在文本编辑框中找到查找特定字符串,然后将字符串所在整行字符串添加颜色
标题 QT中在文本编辑框中找到查找特定字符串,然后将字符串整行字符串添加颜色 ** QString idString = idTextEdit-&amp;amp;amp;amp;amp;gt;textCursor().selectedText().trimmed();//idString为文本编辑区中光标选中高亮内容 if (idString.isEmpty()) ...
find grep sed 实现批量搜索文件,并替换字符串
很容易忘,记录下: find -name "*.xml"| grep "rCN" | xargs grep  测试字符1  -l | xargs sed -i "s/测试字符1/测试字符2/g" find 就不说了; 第一个grep,不需要xargs,为何?因为这个grep查找的不是文件内容,而是路径本身,检查find的取得的文件路径是否包括"rCN"; 第二个grep,需要xar
linux 查找所有文件包含指定内容,并替换
find  ~  -name &quot;*.sh&quot;  -exec  grep -E  -l &quot;\-\-jars.*cpddnn-1\.0-SNAPSHOT\.jar&quot; {} \;查找所有包含  --jars  cpddnn-1.0-SNAPSHOT.jar 内容的文件,注意特殊符号转义grep -l 是list出文件名,-E 使用正则 -o 只列出匹配的行find ~ -name &quot;*.sh&quot;  -exe...
shell 查找文件并进行替换文件内容
#!/bin/sh path=aaa/bbb for file in `ls $path` do echo $file perl -pi -e 's|a/b/|replace_text|g' $path/$file done 在当前路径下的:aaa/bbb文件夹下的文件中,搜索&quot;a/b&quot;,并替换为:“replace_text&quot;。  ...
字符串查找并替换
#include <stdio.h> #include <string.h>static char str[100];char *fun(char *src,char *des,char *mystr) { int a,b,c,d,e,f,i; char *p; a = strlen(src);//替换前总长度 b = strlen(des);//要被替换的长度
linux查找替换字符串的方法
查找与替换 1. 替换 :s/str1/str2/ 替换当前行 第一个str1 为 str2 :s/str1/str2/g 替换 当前行 所有str1为str2 :n,$s/str1/str2/ 替换第 n 行开始到最后一行中每一行的第一个str1为str2 :n,$s/str1/str2/g 替换第 n 行开始到最后一行中每一行所有str1为str2(n 为数字,...
字符串查找替换工具 V2.2 绿盟专用版
字符串查找替换工具 V2.2 绿盟专用版 ┆替换查找文件中指定字符串、可批量替换文件中的字符
用python替换文件中指定字符串
1、将替换后的内容保存到新文件中 import sys import re f1 = open('/home/wuzz/11.txt','r+') f2 = open('/home/wuzz/12.txt','w+') str1=r'hello' str2=r'hi' for ss in f1.readlines(): tt=re.sub(str1,str2,ss) f2.w...
截取字符串前面字符并替换
wlanip 192.168.1.22             char ps[128]={0};               char ptr[32]={0};              char *ret;             int len1,len2;             printf(&quot;wlani=%s\n&quot;,wlanip);             strcpy(ptr,w...
查询某个文件夹下包含某字符的文件和所在行
18:43 [root@a01]$ grep -r TailFile *.py main.py: local_file_source = TailFile("rpt-", "%Y%m%d-%H", "/opt/logs/logdir/") tail_file.py:class TailFile(threading.Thread): tail_file.py: log
shell01:在文本文件中匹配及替换字符(sed)
sed命令 命令格式: sed [options] 'command' file(s) sed [options] -f scriptfile file(s) 选项: 参数 完整参数 说明 -e script --expression=script 以选项中的指定的script来处理输入的文本文件 -f script --files=script ...
【Java】数组实现字符串的替换(增删)
s1
Linux在文件中查找并用颜色标出某个字符串
在hello.cpp文件中搜索num单词(命令行命令 grep –help 查看帮助) grep -i 'num' hello.cpp 或 cat hello.cpp | grep -i 'num' 示例:
java替换指定文件中指定的字符串参考代码
java替换指定文件中指定的字符串参考代码
C语言实现修改文件中指定字符串哪一行内容
C语言实现修改文件中指定字符串哪一行内容 #include&amp;lt;stdio.h&amp;gt; #include&amp;lt;stdlib.h&amp;gt; #include&amp;lt;string.h&amp;gt; #include&amp;lt;unistd.h&amp;gt; /*参数: filepath - 要修改的文件 str - 修改为的字符串 */ void ModifyFile(char* filepath, ch...
Python批量替换文件中指定字符串
不管是txt文件还是xml文件还是其他的,都可以用这种方法来批量替换文件中字符串: # -*- coding:utf-8 -*- __author__ = 'ShawDa' import glob xmls = glob.glob('xml_files/*.xml') for one_xml in xmls: print(one_xml) f = open(one_xml, ...
PHP匹配并替换字符串
匹配特定格式字符串,动态替换数据。 &amp;lt;?php $templ = &quot;{username}是个大{adj}比{end}&quot;;//测试字符串 //对应数据 $datas = [ 'username' =&amp;gt; '我', 'adj' =&amp;gt; '帅', 'end' =&amp;gt; '。', ]; //不...
Qt 字符串的操作(一)查找 替换 比较
//Qt 控制台字符串的操作(一)//查找//替换//比较//若控制台显示为空白按下回车就会显示 #include #include #include int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); //基本操作 QString s1 = "Welcome";
C语言函数:找到字符串中指定字符串并替换,输出为DLL
// convert9.cpp : Defines the entry point for the DLL application. // #include &quot;stdafx.h&quot; #include &quot;convert9.h&quot; #include &quot;windows.h&quot; #include &quot;stdio.h&quot; #include &quot;string.h&quot; BOOL APIENTRY Dll...
Linux 复杂命令
sed -i &amp;quot;s/learndata/NewDisk\/learndata/g&amp;quot; `grep learndata -rl --include=&amp;quot;*.py&amp;quot; ./`背景:更改代码生成的文件和读取的文件的所在目录,需要更改该所有代码中涉及到文件操作的路径 之前放在learndata文件夹下,现在放在,NewDisk/learndata路径下 sed:文件操作命令 -i:替换 s/
字符串替换(StringBuffer)
stringBuffer
ubuntu find+sed 实现对目录中文件指定字符串替换
find - search for files in a directory hierarchy sed - stream editor for filtering and transforming text find ./*  -exec  sed -i 's/apple/iphone/g' {} \; 将当前目录下(包括子目录)中所有文件中的apple替换为iPhone
sql截取字符串并替换?
sql截取一段字符串并对该字符串进行替换的方法。 使用sql replace REPLACE 用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式。 语法 REPLACE ( ''string_replace1'' , ''string_replace2'' , ''string_replace3'' ) 参数 ''string_replace1'' ...
Python 遍历目录和子目录下所有文件,并替换其中的字符串
遍历目录和子目录下所有文件,并替换其中的字符串 调用方法 pytyon replaceStr_Tool.py 跟目录 原始字符串 替换字符串 #!/usr/bin/python # -*- coding: latin-1 -*- ''' 一个遍历目录及其子目录中的文件,更换文件中的指定字符串 调用方法 pytyon replaceStr_Tool.py 更目录 原始
在大量的文件中,查找包含有指定字符串的文件
在大量的文件中,查找包含有指定字符串的文件; 为系统设定文件夹路径,输入多个要查找的字符串用半角分号分隔,自动开始在文件夹中搜索所有的文件,把包含查找内容的文件名罗列出来。
windows 命令行查找字符串 和 文件(find & findstr & for)
1. find 使用方法简介 2.findstr使用方法简介 3.for /r方法简介
js字符串截取并替换
easyui中的datagrid列表显示手机号码截取前三后四,中间四位****号代替 formatter : function(value, row, index) { var len= value.length; var xx= value.substring(3,len-4); var values = value.replace(xx,&quot;****&quot;); re...
Qt 使用正则表达式进行字符串替换
Qt使用类QRegExp封装正则表达式,这里举一个例子。 #include &amp;lt;QRegExp&amp;gt; int main() { QRegExp re = &quot;&amp;lt;a href=\&quot;(.*)\&quot;&amp;gt;(.*)&amp;lt;/a&amp;gt;&quot;; QString str = &quot;&amp;lt;a href=\&quot;blog.csdn.net\&quot;&amp;gt;CSDN博客地址(&amp;lt;a
awk 字符串替换 gsub
gsub(r,s)    在整个$0中用s替代r gsub(r,s,t)    在整个t中用s替代r awk -F "," '{str=gsub(/\t*| *$/,"",$3);ret=$1","$2","$3","NR;print ret}' 去除第三个字段的空格与制表符 awk -F "\t" '{if($3=="吉林") {gsub($3,"吉林省",$3);pr
正则匹配 字符串 并替换
/** * 正则查找字符串中的,并将其结尾补充 * * @param inputString * @return */ public String fillImgEndTag(String inputString) throws PatternSyntaxException { String imgEndTag = "";
QString替换多个字符
QString替换多个字符:将时间中‘-’替换成‘/’ // 采用QRegExp正则表达式  QString str1 = "2017-06-20";      // 使用空格替换"/"  QString str2 = str1.replace(QRegExp("\\-"), "/");
字符串子串寻找及替换
该程序用于寻找一串字符串中的子串,并用新的字符串替换,运行环境是C++ builder 6,每行代码都有详细注释
iOS NSSting 关于字符串的查找、截取、拆分、替换、验证、改变大小写、编码解码等
1、查找 NSString*str = @"bfjfnnfkanfknf"; NSRange range = [str rangeOfString:@"111"]; if (range.location == NSNotFound) {       NSLog(@"str中没有找到111"); }else {      NS
MFC 查找文件中指定字符串
一个入门的,简单的小程序,用MFC写的一个查找文件指定字符串的出现总个数、行号以及频率,刚实习的培训第一个任务!!
从键盘输入字符串并输出该字符串
从键盘输入字符串并输出该字符串 从键盘输入字符串并输出该字符串 从键盘输入字符串并输出该字符串
相关热词 c#异步发送kafka c#窗体编号 c# 操作二进制文件 c# 反射 机制 c#线程 窗体失去响应 c#角度转弧度 c# 解析gps数据 c# vs设置 语法版本 c# json含回车 c#多线程demo