在 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/n/135208.html