Qt5.14 C++ 读写TXT文档

1.读取

    QString filename = "F:\\1.txt";
    QFile afile(filename);
    
    //判断是否存在
    if(!afile.exists())
        return;
    
    if (!afile.open(QIODevice::ReadOnly | QIODevice::Text))
        return;
    
    QTextStream astream(&afile); //用文本流读取文件
    
    // while (!astream.atEnd()) {
    //  qDebug()<<astream.readLine()<<"66";
    
    //}
    
    for(int ii=0;!astream.atEnd();ii++){
        //astream.atEnd() 文档结束符
        QString tempstr = astream.readLine();
        QStringList list1 = tempstr.split('\t');
        //制表符分离
    }
    afile.close();

2.写入

    QString filename = "F:\\1.txt";
    QFile afile(filename);
    //判断是否存在
    if(!afile.exists())
        return;
    //QIODevice::Append 在文档后面增加 ,没有就是覆盖原文档
    if (!afile.open(QIODevice::WriteOnly | QIODevice::Text |QIODevice::Append))
        return;
    
    QTextStream astream(&afile); //用文本流读取文件
    astream<<"hello\n";
    
    afile.close();

3. 使用QTextstream保存数据是乱码,原因是编码不一致导致错误

QString filename = "F:\\1.txt";
QFile afile(filename);
afile.open(QIODevice::WriteOnly | QIODevice::Text |QIODevice::Append)
QTextStream astream(&afile); //用文本流读取文件
//Qt 5 使用setCodec
astream.setCodec("UTF-8");
//添加BOM头
astream.setGenerateByteOrderMark(true);
afile.close();

4. 规范编写,修改QFile

    QElapsedTimer timee;
    timee.start();
    QString filename ="F:\\1.txt";
    QFile file(filename);
    if(file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        QTextStream in(&file);
        for(int ii=0;!in.atEnd();ii++)
        {
            QString str = in.readLine();
            qDebug()<<str;
        }
        file.close();
    }
    else
        qDebug()<<"false";

    filename ="F:\\2.txt";
    file.setFileName(filename);
    if(file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        QTextStream in(&file);
        for(int ii=0;!in.atEnd();ii++)
        {
            qDebug()<<in.readLine();
        }
        file.close();
    }
    else
        qDebug()<<"false";

    qDebug() <<timee.elapsed();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值