Qt 读写txt文本文件

Qt编程:使用QFile进行文件读写操作

打开文件时,使用参数选择打开文件模式

需要导入QFile和qDebug、QString头文件

写入

覆盖写入

 QFile f("D:\\qtManager.txt");
 if(!f.open(QIODevice::WriteOnly | QIODevice::Text))
 {
     qDebug() << ("打开文件失败");
 }
 QTextStream txtOutput(&f);
 QString str = "123";
 txtOutput << str << endl;
 f.close();

文末写入

 QFile f("D:\\qtManager.txt");
 if(!f.open(QIODevice::ReadWrite | QIODevice::Append))   //以读写且追加的方式写入文本
 {
     qDebug() << ("打开文件失败");
 }
 QTextStream txtOutput(&f);
 QString str = "123";
 txtOutput << str << endl;
 f.close();

读取

  QFile f("D:\\qtManager.txt");
  if(!f.open(QIODevice::ReadOnly | QIODevice::Text))
  {
      qDebug() << ("打开文件失败");
  }
  QTextStream txtInput(&f);                 
  QString lineStr;
  while(!txtInput.atEnd())
  {
     lineStr = txtInput.readLine();
     qDebug() << (lineStr);
 }
 f.close();

Qt中,读取txt文本内容主要有两种基本方法,一种是用`QFile`类的`QIODevice`读写功能直接进行读写,另一种是利用`QFile`和`QTextStream`结合起来,用流(Stream)的方法进行文件读写[^2]。 ### 方法一:使用`QFile`和`QTextStream`结合 以下是按行读取txt文件内容的示例代码: ```cpp #include <QFile> #include <QTextStream> #include <QDebug> void readTxt() { // 读取文件 QFile file("./account.txt"); QTextStream stram(&file); // 纯文本文件流 if (file.open(QFile::ReadOnly | QFile::Text)) { while (!stram.atEnd()) { QString line = stram.readLine(); qDebug() << line; } file.close(); } } ``` 此方法将文件以只读和文本模式打开,使用`QTextStream`逐行读取文件内容,直至文件末尾,最后关闭文件[^1]。 ### 方法二:直接使用`QFile` 以下是逐行读取文件并处理中文乱码问题的示例代码: ```cpp #include <QFile> #include <QStringList> #include <QMessageBox> // 假设 knowChinese 函数用于解决中文乱码 QString knowChinese(const QByteArray& data) { // 实现解决中文乱码的逻辑 return QString::fromUtf8(data); } void readTxt(const QString& openFile) { // 打开文件 QFile file(openFile); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { QMessageBox::about(nullptr, "文件", "文件打开失败"); return; } // 读取文件,一行一行读取 QStringList txtList; while (!file.atEnd()) { QString line = knowChinese(file.readLine()); line = line.trimmed(); txtList.append(line); } // 关闭文件 file.close(); } ``` 该方法直接使用`QFile`打开文件,逐行读取文件内容,并通过`knowChinese`函数处理可能出现的中文乱码问题,最后将每行内容添加到`QStringList`中,关闭文件[^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值