QT 文本流和数据流

文本流和数据流

使用文本流读写文本文件

QTextStream 是 Qt 中用于文本输入输出的类,它可以用于读取和写入文本数据到各种数据源,如文件、套接字等。下面是 QTextStream 中几个常用的成员函数:

常用成员函数
  1. QTextStream(QIODevice \*device): 构造函数,用于创建一个 QTextStream 对象,并将其与指定的 QIODevice 关联起来。
cppCopy Code#include <QFile>
#include <QTextStream>

int main() {
    QFile file("file.txt");
    if (!file.open(QIODevice::ReadWrite)) {
        return 1;
    }
    
    QTextStream stream(&file);
    
    // 使用 stream 进行读写操作
    stream << "Hello, QTextStream!";
    
    file.close();
    
    return 0;
}

在这个例子中,通过将 QFile 对象传递给 QTextStream 的构造函数,创建了一个与文件 “file.txt” 关联的 QTextStream 对象。

  1. QString readAll(): 读取所有剩余的文本数据,并返回一个包含这些数据的字符串。
cppCopy Code#include <QFile>
#include <QTextStream>
#include <QDebug>

int main() {
    QFile file("file.txt");
    if (!file.open(QIODevice::ReadOnly)) {
        return 1;
    }
    
    QTextStream stream(&file);
    
    QString contents = stream.readAll();
    
    qDebug() << "File contents:" << contents;
    
    file.close();
    
    return 0;
}

在这个例子中,readAll 函数用于读取文件 “file.txt” 中的所有文本数据,并将其保存到一个字符串中。

  1. void setFieldWidth(int width)int fieldWidth() constsetFieldWidth 函数用于设置字段宽度,即输出时每个字段的宽度。fieldWidth 函数用于获取当前的字段宽度。
cppCopy Code#include <QFile>
#include <QTextStream>
#include <QDebug>

int main() {
    QFile file("file.txt");
    if (!file.open(QIODevice::ReadOnly)) {
        return 1;
    }
    
    QTextStream stream(&file);
    
    stream.setFieldWidth(10);
    
    QString word;
    while (!stream.atEnd()) {
        stream >> word;
        qDebug() << "Word:" << word;
    }
    
    file.close();
    
    return 0;
}

在这个例子中,通过 setFieldWidth 设置了字段宽度为 10,在读取文件中的单词时,每个单词将按照 10 个字符的宽度进行输出。

通过以上几个常用的成员函数,可以实现对文本数据的输入输出,并且可以对输出的格式进行一定的控制。

使用数据流读写二进制数据

QDataStream 类

QDataStream类实现了C ++的基本数据类型(如,,,等)的序列化。更复杂数据的序列化是通过将数据分解为基本单元来完成的。char short int char *

范例 (把二进制数据写入流):

QFile file("file.dat");
file.open(QIODevice::WriteOnly);
QDataStream out(&file);   // we will serialize the data into the file
out << QString("the answer is");   // serialize a string
out << (qint32)42;        // serialize an integer
					

范例 (读取二进制数据从流):

QFile file("file.dat");
file.open(QIODevice::ReadOnly);
QDataStream in(&file);    // read the data serialized from the file
QString str;
qint32 a;
in >> str >> a;           // extract "the answer is" and 42
常用成员函数
  1. operator<<:用于将数据写入数据流中。例如,可以使用该函数将整数、字符串等数据写入到数据流中。
  2. operator>>:用于从数据流中读取数据。例如,可以使用该函数从数据流中读取整数、字符串等数据。
  3. setVersion:设置数据流的版本号。版本号可以影响数据的序列化和反序列化过程。
  4. setByteOrder:设置数据流的字节顺序。可以选择设置为大端字节顺序或小端字节顺序。
  5. setStatus:获取数据流的状态,例如是否出现错误或是否已到达流的末尾。
  6. atEnd:检查是否已到达数据流的末尾。
  7. device:返回与数据流关联的设备指针,可以用于设置或更改I/O设备。
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值