您好,登錄后才能下訂單哦!
小編給大家分享一下Qt中文本流和數(shù)據(jù)流、緩沖操作和數(shù)據(jù)操作的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
A.Qt中講文件類型分為2大類
1.文本文件--文件內(nèi)容是可讀的文本字符
2.數(shù)據(jù)文件--文件內(nèi)容是直接的二進制數(shù)據(jù)
QFile直接支持文本文件和數(shù)據(jù)文件的讀寫
B.Qt提供了輔助類簡化了文本文件/數(shù)據(jù)文件的讀寫
1.QTextStream--寫入的數(shù)據(jù)全部轉(zhuǎn)換為可讀文本
2.QDataStream--寫入的數(shù)據(jù)根據(jù)類型轉(zhuǎn)換為二進制數(shù)據(jù)
IO設(shè)備輔助類的使用方式
不同的Qt版本的數(shù)據(jù)流文件格式可能不同
void setVersion(int v)//設(shè)置的版本號
int version()const//獲取讀寫版本號
代碼示例
#include <QCoreApplication> #include <QFile> #include <QDebug> 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<char*>(&value), sizeof(value)); file.close(); } if( file.open(QIODevice::ReadOnly) ) { QString dt = ""; double value = 0; dt = QString(file.read(19)); file.read(reinterpret_cast<char*>(&value), sizeof(value)); file.close(); qDebug() << dt; qDebug() << value; } return a.exec(); }
運行結(jié)果
A.Qt中緩沖區(qū)的概念
1.緩沖區(qū)的本質(zhì)為一段連續(xù)的存儲空間
2.QBuffer是Qt中緩沖區(qū)相關(guān)的類
3.在Qt中可以將緩沖區(qū)看作一種特殊的IO設(shè)備
4.文件流輔助類可以直接用于操作緩沖區(qū)
QBuffer緩沖區(qū)的使用方式
代碼示例
#include <QtCore/QCoreApplication> #include <QBuffer> #include <QByteArray> #include <QDataStream> #include <QDebug> 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(); }
運行結(jié)果
B.QBuffer緩沖區(qū)的使用場合
1.在線程間進行不同類型的數(shù)據(jù)傳遞
2.緩存外部設(shè)備中的數(shù)據(jù)返回
3.數(shù)據(jù)讀取速度小于數(shù)據(jù)寫入速度
C.QDir是Qt中功能強大的目錄操作類
1.Qt中的目錄分隔符統(tǒng)一使用'/'
2.QDir能夠?qū)δ夸涍M行任意的操作--創(chuàng)建、刪除、重命名
3.QDir能夠獲取指定目錄中的所有條目--文件和文件夾
4.QDir能夠使用過濾字符串獲取指定條目
5.QDir能夠獲取系統(tǒng)中的所有根目錄
目錄操作基礎(chǔ)示例
C.QFileSystemWatcher用于監(jiān)控文件和目錄的狀態(tài)變化
1.能夠監(jiān)控特定目錄和文件的狀態(tài)
2.能夠同時對多個目錄和文件進行監(jiān)控
3.當目錄或者文件發(fā)生改變時將觸發(fā)信號
4.可以通過信號與槽的機制捕捉信號并作出響應(yīng)
以上是“Qt中文本流和數(shù)據(jù)流、緩沖操作和數(shù)據(jù)操作的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。