QT读取指定行文件的问题

foreverlovehon 2012-03-05 04:42:16
请教各位大侠,是否能用QTextStream读取文件的指定行,如下代码
QTextStream stream(&file);
QString str1;
QString *par;
str1=stream.readLine();//读取第一行
str1=stream.readLine();//自动读取下一行

若我想读取第100行难道要100个“str1=stream.readLine();”么?
还有个问题就是文件中有一行内容为start-page-list=0003.mpg,我想在读取到这行的时候将0003.mpg保存到*par中,0003.mpg是变化的,但前面的字节是固定的,我想用类似下面的代码来进行字符串比较
if(!QString::compare(str1,"start-page-list="))
{
*par=str1.remove("start-page-list=",Qt::CaseSensitive );
}

但是str1读到的是整行内容,想问高手QT中有没有只比较前面固定字节的实现方法,如果知道,请帮忙写下简单代码~~
比较急,在线等~~先谢谢各位解决问题的高手哈~~
...全文
1337 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
9468305 2012-03-05
  • 打赏
  • 举报
回复
直接查QRegExp api即可。很简单。
如果正则表达式写不对,可以参考\QtSDK\Examples\4.7\tools\regexp 这个例子。
输入标准的正则表达式,它会转成c++代码中的格式。
也可以拿它测试你的表达式对不对。
9468305 2012-03-05
  • 打赏
  • 举报
回复
使用QT的正则表达式库。

//以任意字符开头,接字符串start-page-list=, 接任意字符,接字符串.mpg,后面可能还有其他任意字符。
QRegExp expMPGFile("(.*)start-page-list=(.*).mpg(.*)");

//exactMatch 是严格匹配上面的正则表达式;可以换成indexIn 模糊匹配。
if(expMPGFile.exactMatch(strLine))
{
qDebug() << "exactMatch: "<< expMPGFile.cap(1) <<expMPGFile.cap(2) << expMPGFile.cap(3) <<endl;
//cap(2)就是你想要的结果内容。
}
else
{
qDebug() << "no match" << endl;
}

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧