Qt中文本流和数据流、缓冲操作和数据操作的示例分析
小编给大家分享一下Qt中文本流和数据流、缓冲操作和数据操作的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
为石家庄等地区用户提供了全套网页设计制作服务,及石家庄网站建设行业解决方案。主营业务为网站设计制作、做网站、石家庄网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
一.文本流和数据流
A.Qt中讲文件类型分为2大类
1.文本文件--文件内容是可读的文本字符
2.数据文件--文件内容是直接的二进制数据
QFile直接支持文本文件和数据文件的读写
B.Qt提供了辅助类简化了文本文件/数据文件的读写
1.QTextStream--写入的数据全部转换为可读文本
2.QDataStream--写入的数据根据类型转换为二进制数据
IO设备辅助类的使用方式
不同的Qt版本的数据流文件格式可能不同
void setVersion(int v)//设置的版本号
int version()const//获取读写版本号
代码示例
#include#include #include int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QFile file("C:/Users/59673/Desktop/test.hex"); if( file.open(QIODevice::WriteOnly) ) { QString dt = "mylovedandanxiaohai"; double value = 3.14; file.write(dt.toStdString().c_str()); file.write(reinterpret_cast (&value), sizeof(value)); file.close(); } if( file.open(QIODevice::ReadOnly) ) { QString dt = ""; double value = 0; dt = QString(file.read(19)); file.read(reinterpret_cast (&value), sizeof(value)); file.close(); qDebug() << dt; qDebug() << value; } return a.exec(); }
运行结果
二.缓冲区操作与目录操作
A.Qt中缓冲区的概念
1.缓冲区的本质为一段连续的存储空间
2.QBuffer是Qt中缓冲区相关的类
3.在Qt中可以将缓冲区看作一种特殊的IO设备
4.文件流辅助类可以直接用于操作缓冲区
QBuffer缓冲区的使用方式
代码示例
#include#include #include #include #include void write_buffer(int type, QBuffer& buffer) { if( buffer.open(QIODevice::WriteOnly) ) { QDataStream out(&buffer); out << type; if( type == 0 ) { out << QString("mylove"); out << QString("3.1415"); } else if( type == 1 ) { out << 3; out << 1415; } else if( type == 2 ) { out << 3.1415; } buffer.close(); } } void read_buffer(QBuffer& buffer) { if( buffer.open(QIODevice::ReadOnly) ) { int type = -1; QDataStream in(&buffer); in >> type; if( type == 0 ) { QString dt = ""; QString pi = ""; in >> dt; in >> pi; qDebug() << dt; qDebug() << pi; } else if( type == 1 ) { int a = 0; int b = 0; in >> a; in >> b; qDebug() << a; qDebug() << b; } else if( type == 2 ) { double pi = 0; in >> pi; qDebug() << pi; } buffer.close(); } } int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QByteArray array; QBuffer buffer(&array); write_buffer(0, buffer); read_buffer(buffer); return a.exec(); }
运行结果
B.QBuffer缓冲区的使用场合
1.在线程间进行不同类型的数据传递
2.缓存外部设备中的数据返回
3.数据读取速度小于数据写入速度
C.QDir是Qt中功能强大的目录操作类
1.Qt中的目录分隔符统一使用'/'
2.QDir能够对目录进行任意的操作--创建、删除、重命名
3.QDir能够获取指定目录中的所有条目--文件和文件夹
4.QDir能够使用过滤字符串获取指定条目
5.QDir能够获取系统中的所有根目录
目录操作基础示例
C.QFileSystemWatcher用于监控文件和目录的状态变化
1.能够监控特定目录和文件的状态
2.能够同时对多个目录和文件进行监控
3.当目录或者文件发生改变时将触发信号
4.可以通过信号与槽的机制捕捉信号并作出响应
以上是“Qt中文本流和数据流、缓冲操作和数据操作的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!
文章题目:Qt中文本流和数据流、缓冲操作和数据操作的示例分析
转载来于:http://scyanting.com/article/ijohjh.html