当前位置: 首页 > article >正文

Qt读写文本文件


在Qt中读写文本文件通常使用 QFileQTextStream 类。以下是实现读写文本文件的步骤和示例代码。


1. 读取文本文件

代码示例

#include <QFile>
#include <QTextStream>
#include <QDebug>

void readTextFile(const QString &filePath) {
    QFile file(filePath);

    // 以只读模式打开文件
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
        qDebug() << "无法打开文件:" << file.errorString();
        return;
    }

    QTextStream in(&file);
    while (!in.atEnd()) {
        QString line = in.readLine(); // 按行读取文件
        qDebug() << line;             // 输出读取的内容
    }

    file.close();
}

说明

  1. 使用 QFile 打开指定路径的文件。
  2. 使用 QTextStream 进行文本内容的读取。
  3. readLine() 方法可以按行读取文本内容。

2. 写入文本文件

代码示例

#include <QFile>
#include <QTextStream>
#include <QDebug>

void writeTextFile(const QString &filePath, const QString &content) {
    QFile file(filePath);

    // 以写入模式打开文件,覆盖已有内容
    if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
        qDebug() << "无法打开文件:" << file.errorString();
        return;
    }

    QTextStream out(&file);
    out << content; // 将内容写入文件

    file.close();
}

说明

  1. 使用 QFile 打开指定路径的文件。
  2. QIODevice::WriteOnly 打开文件用于写入,文件内容将被清空。
  3. 使用 QTextStream 将文本内容写入文件。

3. 追加文本内容

如果希望追加到文件末尾而不是覆盖文件内容,可以使用 QIODevice::Append

代码示例

void appendTextFile(const QString &filePath, const QString &content) {
    QFile file(filePath);

    // 以追加模式打开文件
    if (!file.open(QIODevice::Append | QIODevice::Text)) {
        qDebug() << "无法打开文件:" << file.errorString();
        return;
    }

    QTextStream out(&file);
    out << content << "\\n"; // 追加内容并换行

    file.close();
}

4. 使用示例

int main() {
    QString filePath = "test.txt";

    // 写入文件
    writeTextFile(filePath, "这是第一行文本。\\n");

    // 追加文件
    appendTextFile(filePath, "这是追加的内容。");

    // 读取文件
    readTextFile(filePath);

    return 0;
}

总结

  • QFile 用于打开和管理文件。
  • QTextStream 用于读写文本内容。
  • 打开模式:
    • QIODevice::ReadOnly:只读。
    • QIODevice::WriteOnly:只写,覆盖原文件内容。
    • QIODevice::Append:追加内容到文件末尾。
    • QIODevice::ReadWrite:可读可写。

以上代码可以用于任何支持Qt的项目来处理文本文件。


http://www.kler.cn/a/441466.html

相关文章:

  • HTML5 常用事件详解
  • 【Django】多个APP设置独立的URL
  • 【机器学习案列】探索各因素对睡眠时间影响的回归分析
  • 安卓动态设置Unity图形API
  • C++ 二叉搜索树
  • 梯度提升决策树树(GBDT)公式推导
  • 【Spring 全家桶】Spring MVC 快速入门,开始web 更好上手(下篇) , 万字解析, 建议收藏 ! ! !
  • 通过gateway实现服务的平滑迁移
  • 登陆harbor发现证书是错误的, 那么如何更新harbor的证书呢
  • 深入解析Ubuntu 20.04 ROS中的setup.bash文件
  • OPC UA、MQTT 和 HTTP性能分析及使用场景推荐
  • Linux shell脚本练习(三)
  • gateway 微服务的入口-笔记
  • opencv实战--颜色识别
  • 数据结构day3作业
  • Python 写的《桌面时钟》屏保
  • React自学:如何使用localStorage,以及如何实现删除笔记操作
  • docker-4.迁移存储目录
  • 04 条件渲染
  • 《红队蓝队在网络安全对抗演练中的运作模式》
  • 日拱一卒(16)——leetcode学习记录:山脉数组峰值索引
  • CTF知识集-SQL注入
  • oracle创建用户,并授权dba权限
  • RabbitMQ基本使用以及整合Java项目
  • linux上qt打包(二)
  • Windows环境 (Ubuntu 24.04.1 LTS ) 国内镜像,用apt-get命令安装RabbitMQ,java代码样例