Qt写文本文件

转载 2013年12月04日 13:01:17

QTexstStream用于读写纯文本以及HTML,XML等文本格式的文件,此类考虑了Unicode编码与系统本地编码的或其它任意编码之间的转换问题,别且明确地处理了因使用不同的操作系统而导致的行尾符之间的转换(windows系统的行尾符是“\r\n”,unix和mac os x系统是“\n”)。

QTexstStream的操作对象是QIODevice,可是QFile,QTEmporaryFile,QBuffer,QProcess,QTcpSocket或者QUpdSocket,此外还可以直接在QString上使用,如:

   QString str;

QTextStream(&str)<<oct<<31<<" "<<dec<<25<<endl;

qDebug()<<oct<<31<<" "<<dec<<25<<endl;

qDebug输出的结果是“37 25”,这是因为十进制31的八进制值是37,因为QString的编码总是Unicode编码,因此使用QString做QIODevice时如果想要用unicode编码就不用再认为设置了。

QTexstStream还有一些类似<iostream>的选项,比如用showbase设置显示二进制、八进制、十六进制的前缀,使用uppercasedigits和hex输出大写十六进制数:

   fileOut<<showbase<<uppercasedigits<<hex<<1234567;

也可以使用成员函数来完成这些设置:

   fileOut.setNumberFlags(QTextStream::ShowBase|QTextStream::UppercaseDigits);

   fileOut.setIntegerBase(16);

 

文件包含:

#include <QTextStream>

#include <QMessageBox>

代码:

   QFile file("test.txt");

  

   if(!file.open(QIODevice::WriteOnly))

   {

      QMessageBox::information(this,tr("打开文件失败!"),file.errorString());

   }

   QTextStream fileOut(&file);

   // fileOut.setCodec("UTF-8");  //unicode UTF-8  ANSI

   fileOut <<"Helloworld!"<<"\n";

   fileOut <<tr("写文件,第").to<<1<<"行."<<endl;

   file.flush();

   file.close();

输出结果:

Hello world!

D′???t£?μú1DD.

使用上面的方式写文件时,如果文件不存在,会自动创建。写入英文时没有问题,但是如果写入中文,出现的是乱码。

写中文文本文件

文件包含:

#include <QTextStream>

#include <QMessageBox>

#include <QTextCodec>

#include <string>

代码:

   QFile file("test.txt");

  

   if(!file.open(QIODevice::WriteOnly | QFile::Text))

   {

      QMessageBox::information(this,tr("打开文件失败!"),file.errorString());

      return;

   }

 

   QTextCodec* codec=QTextCodec::codecForName("UTF-8");

   std::string strData="abcde写入中文";

   char* buf=new char[strData.size()+1];

   strcpy(buf,strData.c_str());

   QString qStr=qStr.fromLocal8Bit(buf);  //fromLocal8Bit是QString的静态成员方法,这里的对象名只起标识类的作用

  

   QTextStream out (&file);

   out.setCodec(codec);

   out <<qStr<<"\n";

   file.flush();

   file.close();

输出结果:

abcde写入中文

使用上面的方法可以输出中文,但是过于复杂并且使用不方便。可以使用tr函数来简化问题。

qt 中文写入文本文件

  • 2010年06月03日 09:04
  • 2KB
  • 下载

QT学习 之 文本文件读写

上一章我们介绍了有关二进制文件的读写。二进制文件比较小巧,却不是人可读的格式。而文本文件是一种人可读的文件。为了操作这种文件,我们需要使用QTextStream类。QTextStream和QDataS...

Qt之文件详解(三)文本文件读写

上一章我们介绍了有关二进制文件的读写。二进制文件比较小巧,却不是人可读的格式。而文本文件是一种人可读的文件。为了操作这种文件,我们需要使用QTextStream类。QTextStream和QDataS...

Qt学习之路(57): 文本文件读写

Qt学习之路(57): 文本文件读写 2010-04-16 23:21:13 标签:Qt C++ 教程 QT教程 学习 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始...

Qt写文本文件

QTexstStream用于读写纯文本以及HTML,XML等文本格式的文件,此类考虑了Unicode编码与系统本地编码的或其它任意编码之间的转换问题,别且明确地处理了因使用不同的操作系统而导致的行尾符...

QT 程序 删除文本文件中某一行

  • 2012年06月05日 17:50
  • 345KB
  • 下载

QT4文本文件保存打开例程源代码

  • 2011年12月08日 16:35
  • 27KB
  • 下载

QT学习之读取excel并保存为文本文件

最近加入一家手游公司,需要写个配置文件的编辑器,由于我之前是些as的,本来das...

安卓对文本文件进行写(读)数据

  • 2016年06月03日 18:34
  • 3.84MB
  • 下载

Java IO学习基础之读写文本文件

  • 2007年10月08日 22:16
  • 20KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Qt写文本文件
举报原因:
原因补充:

(最多只允许输入30个字)