qt 之读写文件

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 <QFile>
#include <QTextCodec>

QString readFile(const QString &fileName)
{
    QFile file(fileName);
    if(!file.open(QIODevice::ReadOnly | QFile::Text))
        return "";
    QString str(file.readAll());
    return str;
}


void writeFile(const QString &fileName,const QString &context)
{
    QFile file(fileName);
    if(!file.open(QIODevice::WriteOnly | QFile::Text))
        return;
    QTextCodec* codec=QTextCodec::codecForName("UTF-8");
    QTextStream out (&file);
    out.setCodec(codec);
    out<<context;
    file.flush();
    file.close();


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值