第12章 输入与输出

1.Qt通过QIODevice为输入输出提供了极佳的支持。QIODevice是一个封装能够读写字节块“设备”的强有力的提取器。

 

2.除了设备类,Qt还提供了两个更高级别的流类,使我们可以从任意的输入输出设备读写数据(QDataStream用来读写二进制的数据),(QTextStream用来读写文本数据)

3.Qt提供了QDir,QFileInfo类,它们分别用于处理目录地址和提供内部文件信息。

4.QProcess可以允许访问外部进程,这里说的很少,后面会单独为它开一页。

 

这章主要是讲文件的写入和读出。

 

 

写入:

 

QFile file("C://Users//Nikola//Desktop//1.txt");

 

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

{

return -1;

}

 

 

QTextStream out(&file);

for(int i = 0;i < 10;++I)

{

out >> i >>endl;

}

 

读出:

int main(int argc,char* argv[])

{

QFile file("C://Users//Nikola//Desktop//1.txt");

 

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

{

return -1;

}

 

 

QTextStream in(&file);

while(!in.atEnd())

{

QString a = in.readLine();

std::cout << a.toStdString() << std::endl;

}

std::cin.get();

std::cin.get();

}

 

结合我自己的工作经验,文件的输入输出一个比较重要的应用是实现软件的串行化,这个有时候需要自己去对运算符重载和对特定的数据类型进行注册。

 运算符重载事例代码如下:
QDataStream &operator<<(QDataStream &out, const Painting &painting)
这里假设Painting是你自己定义的一个类。
QDataStream &operator<<(QDataStream &out, const Painting &painting){ 
      out<<painting.title()<<paint.artist()<<quint32(painting.year());
}
QDataStream &operator>>(QDataStream& in,const Painting &painting){  
  QString title;  
  QString artist;
  quint32 year;
  in >> title >> artist >> year;

 return in; 
}

 

5.QProcess这里讲的不够细致。后面再开一章节吧。。。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值