锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / C++开源心得 / QT平台文件逐行读取和字符串规律输出练习
服务方向
软件开发
办公财务MIS
股票
设备监控
网页信息采集及控制
多媒体
软件开发培训
Java 安卓移动开发
Java Web开发
HTML5培训
iOS培训
网站前端开发
VC++
C++游戏开发培训
C#软件
C语言(Linux)
ASP.NET网站开发(C#)
C#软件+ASP.NET网站
SOCKET网络通信开发
COMOLE和ActiveX开发
C++(Linux)
汇编和破解
驱动开发
SkinMagicVC++换肤
流媒体开发
MicroStation二次开发
计算机英语翻译
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

QT平台文件逐行读取和字符串规律输出练习

练习要求

逐行读取指定文件里的字符串,把字符串转换后进行输出,转换要求为十个字符为一组,偶数组(0,2…)为为非数字,奇数组(1,3…)是为数字。非数字用完,则后续全用数字;数字用完,则后续全用非数字。最后把所有行规律结果写入到新文件里。

所用技术

QT按行读取文件

m_FilePath = "C:\\student.txt";
QFile file(m_FilePath);
if(!file.open(QIODevice::ReadOnly | QIODevice::Text))//打开文件
{
qDebug() << "Can't open the file!";
return;
}
QTextStream in(&file);  //用文件构造流
line = in.readLine();//读取一行放到字符串里
while(!line.isNull())//字符串有内容
{
line=in.readLine();//循环读取下行
 }

判断字符是否为数字或非数字

if(sin[j] > '0' && sin[j] < '9')
{
numpart.append(sin[j]);
if(numpart.length()>=10)
{
slnumpart.append(numpart);
numpart.clear();
}
continue;
}
else if((sin[j]>='a'&&sin[j]<='z')||(sin[j]>='A'&&sin[j]<='Z'))
{
nonnumpart.append(sin[j]);
if (nonnumpart.length()>=10)              
{
slnonnumpart.append(nonnumpart);
nonnumpart.clear();
}
continue;
}

支持分组处理使用字符串数组QStringList类

QStringList类提供了一个字符串列表,从QList <QString>继承而来,它提供快速索引为基础的接入以及快速插入和清除,其成员函数用于操作这个字符串列表如append(),insert(), replace(),removeAll(), removeAt(), removeFirst(), removeLast(), and removeOne()。本例里用的append()来进行添加。

细节流程

初学者不能把问题模型化,不能切分步骤。如果以前没接触过QT,则对实际上简单的技术也不敢下手,比如按行读取文件,所以会卡在某个点上浪费时间不敢动手,这时候就需要老师引导了,锐英源孙老师通过在线教育也能进行引导,欢迎关注。
这个练习,首先要把文件读取函数写出来;
文件行读取出来以后,再写一个字符串的处理函数,方便读取的字符串的处理:QString procLine(QString sin);
字符串处理函数中,判断字符串中是否为数字,分三类处理:数字部分和非数字部分,然后是尾部的处理。
(1)数字部分的处理,如果数字部分总长度累计大于等于10,大于等于部分放入数字整组中,;
(2)非数字部分处理,如果非数字部分总长度累计大于等于10,大于等于部分放入非数字整组中;
(3)尾部处理,非数字部分剩余先放入,数字部分剩余后放。
这里是尾部处理的部分代码:
for(int j=0;j<slnonnumpart.size();j++)      
{
sreturn+=slnonnumpart[j];
if(j<slnumpart.size())
{
sreturn+=slnumpart[j];

}                   
}
for(int k=slnonnumpart.size();k<slnumpart.size();k++)
{
sreturn+=slnumpart[k];
}
sreturn+=nonnumpart;
sreturn+=numpart;
return sreturn;

将读取的每一行传入字符串处理函数中,循环处理,显示到文本框,main中调用显示。

友情链接
版权所有 Copyright(c)2004-2015 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州市文化路47号院1号楼4层(47-1楼位于文化路和红专路十字路口东北角,郑州大学工学院招待所南边,工学院科技报告厅西边。)
>