QT的字符类型转换与文件操作

1.QString----->c++ string---------->char*

QString arr;   arr.toStdString().data();

2.QString------->QByteArray

 方法一 :QString str;  str.toUtf8   (转成utf8编码)

 方法二:QString str;  str.toLocal8Bit()  (转成本地编码)

3.QByteArray--------->char*

  QByteArray a;   char*b=a.data()

4.char*------------------>QString

char*arr="hhh";   QString s=QString(arr);

5.QByteArray-------------->QString

QByteArray*arr="hhh";   QString s=QString(arr);

1.QTQDataStream的用法(数据流(二进制))

void Widget::write_data()
 {
    QFile f("./1.txt");  //创建文件1.txt
    QDataStream flu(&f); //文件流与文件关联
    bool isok=f.open(QIODevice::WriteOnly);
    if(isok==false)
        return ;
    flu<<"中国"<<24; //往数据流中写数据,相当于往文件里写数据
    f.close();
 }

void Widget::read_data()
{
    QFile f("./1.txt");
    QDataStream flu(&f);   //创建数据流,和file文件关联
    bool isok=f.open(QIODevice::ReadOnly);
    if(isok==false)
        return;
    char* str;
    int count;
    flu>>str>>count;  //往数据流中读数据,相当于往文件里读数据
    qDebug()<<str<<count;
    f.close();
}

总结:以什么类型写就以什么类型读(否则会读不到) 读的数据与写数据顺序一样 读写一定要记得关闭文件(这个很容易忘) 

 2.QTextStream的用法

void Widget::write_data()
{
    QFile f("./2.txt");         //创建文件2.txt
    QTextStream flu(&f);  //文本流关联
    flu.setCodec("UTF-8");
    bool isok=f.open(QIODevice::WriteOnly);
    if(isok==false)
        return ;
    flu<<QString("中国")<<24;
    f.close();
}

void Widget::read_data()
{
    QFile f("./2.txt");
    QTextStream flu(&f);
    bool isok=f.open(QIODevice::ReadOnly);
    if(isok==false)
        return;
    QString str;
    int count;
    flu.setCodec("UTF-8");
    flu>>str>>count;
    qDebug()<<str<<count;
    f.close();
}
#总结 可以指定字符编码读是什么编码写就是什么编码 不能读char*类型   

3.QBuffer 内存文件的操作

QByteArray arr;
    QBuffer buff(&arr);
    bool isok=buff.open(QIODevice::WriteOnly);
    if(isok==false)
    {
        return ;
    }
    buff.write("vdvd");//写到内存
    buff.write("百度");   
//  qDebug()<<buff.buffer()<<endl;//打印缓冲区的内容
//  qDebug()<<arr<<endl;//打印字节数组的内容

    //QDataStream 与 QBuffer的操作(都是二进制)
    buff.close();
    QBuffer buff1;
    buff1.open(QIODevice::WriteOnly);
    QDataStream s(&buff1);
    s<<QString("热热");
    buff1.close();

    buff1.open(QIODevice::ReadOnly);
    QDataStream s1(&buff1);
    QString str;
    s1>>str;
    qDebug()<<str;
    buff1.close();

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值