在 Qt 中,我們可以使用 QTextStream 來實現對文本文件的輸入輸出操作。QTextStream 提供了方便的方法來讀寫文件、字符串和標準輸入輸出。本文將會從以下幾個方面介紹 QTextStream 的使用:
一、QByteArray 轉 QString
我們知道,在處理二進制數據的時候,通常會使用 QByteArray 類型進行存儲和傳輸。但是有時候我們需要將 QByteArray 轉換成文字格式的數據,這時候我們就需要用到 QTextStream 了。
示例代碼如下:
QByteArray array = QByteArray::fromHex("E4 B8 AD E6 96 87"); // 二進制數據 QString str; QTextStream stream(&str, QIODevice::WriteOnly); stream << array; qDebug() << str; // 輸出: 中文
在上面的示例中,我們通過 fromHex 函數將十六進制字符串轉成二進制數據,再使用 QTextStream 將二進制數據轉成了 UTF-8 編碼的中文字符。
二、QString 轉 QByteArray
與將 QByteArray 轉成 QString 相似,我們也可以使用 QTextStream 將 QString 轉成二進制數據。
示例代碼如下:
QString str = "中文"; QByteArray array; QTextStream stream(&array, QIODevice::WriteOnly); stream << str; qDebug() << array.toHex(); // 輸出: e4b8ade69687
在上面的示例中,我們通過 QTextStream 將 UTF-8 編碼的中文字符轉成二進制數據,再通過 toHex 函數將二進制數據轉成了十六進制字符串。
三、從文件中讀取數據
當我們需要從文件中讀取數據時,QTextStream 提供了 read、readLine 和 operator>> 等函數。
示例代碼如下:
QFile file("example.txt"); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { QTextStream stream(&file); QString line; while (!stream.atEnd()) { stream >> line; qDebug() << line; } file.close(); }
在上面的示例中,我們打開名為 example.txt 的文件,並通過 QTextStream 對其進行讀取。每次讀取一行,直到文件結束。
四、向文件中寫入數據
與從文件中讀取類似,QTextStream 也提供了 write、writeLine 和 operator<< 等函數來向文件中寫入數據。
示例代碼如下:
QFile file("example.txt"); if (file.open(QIODevice::WriteOnly | QIODevice::Text)) { QTextStream stream(&file); stream << "Hello, "; stream << "world!" << endl; file.close(); }
在上面的示例中,我們寫入了兩行數據到 example.txt 文件中,分別為 “Hello, ” 和 “world!”。
五、基於 QTextStream 的自定義輸入輸出操作符
我們可以基於 QTextStream 的輸入輸出操作符來定義自己的輸入輸出格式。
示例代碼如下:
class MyType { public: int value1; float value2; }; QTextStream &operator<<(QTextStream &stream, const MyType &type) { stream << type.value1 << " " <>(QTextStream &stream, MyType &type) { stream >> type.value1 >> type.value2; return stream; } int main() { MyType t = { 42, 3.14f }; QString str; QTextStream stream(&str, QIODevice::ReadWrite); stream << t; qDebug() <> t2; qDebug() << t2.value1 << t2.value2; // 輸出: 42 3.14f return 0; }
在上面的示例中,我們定義了一個名為 MyType 的結構體,並基於 QTextStream 的輸入輸出操作符來定義了 MyType 的輸入輸出格式。最後我們創建了一個 MyType 類型的變量 t,並通過 QTextStream 將其寫入到了字符串 str 中。再將 str 中的數據讀出來,並通過 qDebug 輸出。
原創文章,作者:GLQA,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/135208.html