设为首页 加入收藏

TOP

2.4 主控台的输入与输出
2013-10-07 15:19:07 来源: 作者: 【 】 浏览:65
Tags:2.4 主控 台的 输入 输出

2.4  主控台的输入与输出

本书一些例子需要从键盘接收输入,并向屏幕输出文本信息。如果输入/输出数据是C++(www.cppentry.com)的基本类型,我们仍然可以使用C++(www.cppentry.com)标准库定义的cin与cout。如果输入/输出数据是Qt库中某些类的对象,我们就不能使用标准库中的cin与cout,因为Qt为了支持Unicode,设计了自己的输入/输出架构。

第7章将详细阐述Qt的输入/输出流框架,本节简要介绍如何使用该框架。类似于C语言,Qt也将键盘、屏幕看作特殊的文件。为了对文件进行输入/输出操作,Qt定义了类QFile以及QTextStream。QFile是对C语言文件操作函数的简单封装,实现底层的文件操作。而QTextStream实现二进制数据与Unicode文本数据之间的转换。

对文件操作时,一个QTextStream对象和一个QFile对象绑定。当需要输出程序中的二进制数据时,QTextStream将二进制数据转换为Unicode文本格式,再由QFile将数据写入文本文件。读取数据时,QFile从文本文件读取数据,由QTextStream完成文本格式到二进制格式的转换。如果该文本文件恰好是C++(www.cppentry.com)中预先定义的全局变量FILE * stdin,则从键盘接收数据;如果该文本文件是stdout,则向屏幕输出。

我们也可以使用Qt提供的类QDebug来输出数据,该类支持C++(www.cppentry.com)基本数据类型、Qt中的大部分数据类型。代码段2 1演示了以上两种方式。行①、②中的对象虽然与C++(www.cppentry.com)标准库中的cin,cout同名,但二者的类型是QTextStream,因而可以对一个类型为QString的对象进行操作。行③的函数qDebug()返回一个全局默认的QDebug对象,该对象支持QRect类型对象的输出。

代码段2 1,使用Qt进行主控台输入与输出,取自z:\examples\qt_console\main.cpp

  1. QTextStream cin(stdin, QIODevice::ReadOnly);        ①  
  2. QTextStream cout(stdout, QIODevice::WriteOnly); ②  
  3. int main(int argc, char *argv[])  
  4. {  
  5.     QString str;  
  6.     cin >> str;  
  7.     cout << "the string is "<< str << endl;  
  8.     qDebug() << "Qt types " << QRect(0,0,10,10) << endl;        ③  
  9. }  

创建上述主控台应用程序的步骤如下。在VS 2010中执行File\New\Project,在Project Types中选择Qt4 Projects,在Templates中选择Qt Console Application。在Name域中输入一个项目名称比如qt_console,在Location域输入一个已经存在的目录名。不选"Create directory for solution"选择框,以默认配置执行后续步骤,即可创建一个主控台应用程序。

关于选择框"Create directory for solution"的细节如下:VS 2010的一个solution可以包含多个projects,每个project可以有自己独立的子目录。每个solution对应着一个描述文件,描述该solution包含哪些projects,而每个project也会对应着一个描述文件,描述该project包含哪些C++(www.cppentry.com)源文件、头文件等。如果一个solution只含有一个project,可以不选Create directory for solution选项,此时该solution以及该project共享一个目录,二者的描述文件都被存放在该目录下。如果选择了这个选项,VS 2010会为二者各自创建一个目录,将二者的描述文件放在各自的目录下。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.5 关于类图的约定 下一篇2.5 Qt风格的编程规范

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: