opencv---文件操作总结

本文介绍了使用Qt进行文件读写的几种方法,包括利用QDataStream和QTextStream进行二进制和文本文件的操作,并展示了如何处理文件打开错误及读取不同格式的内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章地址
http://blog.csdn.net/ei__nino/article/details/7301132
http://blog.csdn.net/xgbing/article/details/7772953

文件读写

QDataStream

http://blog.csdn.net/u010847519/article/details/68065599

#include "mainwindow.h"
#include <QApplication>
#include<QImage>
#include<QFile>
#include<QMap>
#include<QDataStream>
#include<QString>
#include<QColor>
#include<QIODevice>
#include<iostream>
using namespace std;
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QImage image(":/p.png");

    QMap<QString, QColor> map;
    map.insert("red", Qt::red);
    map.insert("green", Qt::green);
    map.insert("blue", Qt::blue);

    QFile file("facts.dat");
    if (!file.open(QIODevice::WriteOnly)) {
       std::cerr << "Cannot open file for writing: "
                  << qPrintable(file.errorString()) << std::endl;
    }

    QDataStream out(&file);
    out.setVersion(QDataStream::Qt_4_3);

    out << quint32(0x12345678) << image << map;

    return a.exec();
}

QTextStream

http://blog.csdn.net/u010847519/article/details/69212844
写入文件

QFile file("sf-book.txt");  
if (!file.open(QIODevice::WriteOnly)) {  
    std::cerr << "Cannot open file for writing: " 
              << qPrintable(file.errorString()) << std::endl;  
    return;  
}  

QTextStream out(&file);  
out << "Thomas M. Disch: " << 334 << endl; 
QString fileName=“D:/Lib/1.txt");

QString str="CSDN";
QFile file(fileName);
if(!file.open(QIODevice::ReadWrite | QIODevice::Text))
  {
    QMessageBox::warning(this,"sdf","can't open",QMessageBox::Yes);

  }

QTextStream in(&file);
in<<str<<"\n";//如果写多行,同上循环即可

file.close();

读文件

QString fileName = "D:\Lib\1.txt";
QString str;
QFile file(fileName);
if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
     {
      QMessageBox::warning(this,"Warnning","can't open",QMessageBox::Yes);

     }
QTextStream in(&file);
str=in.readLine();//读取一行
QString str2[MAX];
for(int 1=0 ;i<MAX; i++)//读取多行的代码
str2[i]=in.readLine();
file.close();

File知识点详解

file代码片段

if(!file.open(QIODevice::ReadOnly | QIODevice::Text))

open参数
file.open参数
QIODevice::Text在读写文本文件时使用,这样可以自动转化换行符为本地换行符

读写中文文件—QTextCodec

QTextCodec 类:提供文本编码之间的转换。

#include <qstring.h>
#include <qfile.h>
#include <qtextstream.h>
#include <qtextcodec.h>

int main() 
{   
 QFile file("test.txt");
 if (file.open(IO_ReadOnly|IO_Raw))
 {
  QTextStream floStream(&file);
  QString line;
  QTextCodec *codec=QTextCodec::codecForName("GBK");
  floStream.setCodec(codec); 
  while ( floStream.atEnd()==0 ) 
  {
   line = codec->fromUnicode(floStream.readLine());
   qWarning(line);
  }
  file.close();     
 }
 return 0;
}

删除文件

 QString fileName=“D:/Lib/1.txt");
 QFile file;
 file.remove(fileName); 

文件名去扩展名

QString fileName="1.txt";
int index = fileName.lastIndexOf(".");
fileName.truncate(index);
QMessageBox::warning(this,"Tips",fileName,QMessageBox::Yes);//现在的fileName就是"1"
//同理,lastIndexOf是找最后一个符合条件的位置,将文件名按字符串来处理就好了

添加路径和扩展名

QString fienName = "1";
fileName.prepend("D:\Lib\");
fileName.append(".txt");
QMessageBox::warning(this,"Tips",fileName,QMessageBox::Yes);//fileName 为"D:\Lib\1.txt"//总之是对QString的简单操作而已
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值