QFile如何读取存放在txt里的数据?

wangduohuai 2015-06-28 10:44:58
数据存储形式如图:

每一行有三个数据,我想把每一行的三个数据分别放在三个数组里,请问程序怎么编写?谢谢啦
...全文
465 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangduohuai 2015-06-29
  • 打赏
  • 举报
回复
引用 5 楼 liuyuanmei 的回复:
看看QString中的这三个函数
QStringList split ( const QString & sep, SplitBehavior behavior = KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const
QStringList split ( const QChar & sep, SplitBehavior behavior = KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const
QStringList split ( const QRegExp & rx, SplitBehavior behavior = KeepEmptyParts ) const
读取文件中的每一行数据
如果你每一行中的数据使用制表符分开的可以这样拆分得到一行中的三个数据,strList中自然就按顺序存放三个数据了。
QString info = in.readLine();
QStringList strList = info.split( "\t");
如果是空格进行分隔的话,也可以这样处理,只是你要对得到的数据进行加工处理下,因为最后列里的一个数据有空格。
参照qt的帮助文档体会一下吧
你的数据最好就序列化写入,然后序列化读出,直接存放到到对应的数组中。


引用 5 楼 liuyuanmei 的回复:
看看QString中的这三个函数
QStringList split ( const QString & sep, SplitBehavior behavior = KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const
QStringList split ( const QChar & sep, SplitBehavior behavior = KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const
QStringList split ( const QRegExp & rx, SplitBehavior behavior = KeepEmptyParts ) const
读取文件中的每一行数据
如果你每一行中的数据使用制表符分开的可以这样拆分得到一行中的三个数据,strList中自然就按顺序存放三个数据了。
QString info = in.readLine();
QStringList strList = info.split( "\t");
如果是空格进行分隔的话,也可以这样处理,只是你要对得到的数据进行加工处理下,因为最后列里的一个数据有空格。
参照qt的帮助文档体会一下吧
你的数据最好就序列化写入,然后序列化读出,直接存放到到对应的数组中。


QTextStream in(&file);
QString line = "";
while(!in.atEnd())
{
line = in.readLine();
QStringList strlist=line.split(" ");
qDebug()<<strlist;
QStringList list=strlist.at(0).split("#");
qDebug()<<list.at(0);
if(list.at(0) == "2015-06-29 11:28:06")
ui->lineEdit->setText(in.readLine());
}
这是我的程序,但是
if(list.at(0) == "2015-06-29 11:28:06")
ui->lineEdit->setText(in.readLine());
实现不了,怎么回事?
qDebug()<<list.at(0);
这个显示的也不是2015-06-29 11:28:06
txt文件存储数据形式:
liuyuanmei 2015-06-29
  • 打赏
  • 举报
回复
看看QString中的这三个函数 QStringList split ( const QString & sep, SplitBehavior behavior = KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const QStringList split ( const QChar & sep, SplitBehavior behavior = KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const QStringList split ( const QRegExp & rx, SplitBehavior behavior = KeepEmptyParts ) const 读取文件中的每一行数据 如果你每一行中的数据使用制表符分开的可以这样拆分得到一行中的三个数据,strList中自然就按顺序存放三个数据了。 QString info = in.readLine(); QStringList strList = info.split( "\t"); 如果是空格进行分隔的话,也可以这样处理,只是你要对得到的数据进行加工处理下,因为最后列里的一个数据有空格。 参照qt的帮助文档体会一下吧 你的数据最好就序列化写入,然后序列化读出,直接存放到到对应的数组中。
wangduohuai 2015-06-29
  • 打赏
  • 举报
回复
引用 2 楼 walry_dudu 的回复:
用QTextStream试试吧
我用了,但不知道怎么存放到数组里?
wangduohuai 2015-06-29
  • 打赏
  • 举报
回复
引用 1 楼 Inhibitory 的回复:
1. 使用 QTextStream 按行读取文件 2. 解析 1 得到的行,然后放到数组里
按行读取已经读出出来了, ui->textBrowser->setPlainText(in.readLine()); 请问怎么解析啊?
Inhibitory 2015-06-28
  • 打赏
  • 举报
回复
1. 使用 QTextStream 按行读取文件 2. 解析 1 得到的行,然后放到数组里
walry_dudu 2015-06-28
  • 打赏
  • 举报
回复
用QTextStream试试吧

16,175

社区成员

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

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