零基础学Qt 4编程实例之三:勾三股四弦必五—文件包含语句与标准库的使用

声明:
《零基础学Qt4编程》中的专栏文章是qter_wd007的原创技术文章。
本系列专栏文章可随意转载,但必须保留本段声明和每一篇文章的原始地址。
作者保留版权,未经作者预先书面许可,不得用于任何商业用途。否则相关的法律责任请自付。

实例说明:

本例将编写一个实现直角三角形斜边的程序,在这过程中需要进行开平方运算,通过调用C++标准库自带的函数可以实现该功能。通过学习这个例子,读者可以掌握C++语言中文件包含语句的使用以及如何使用标准类库中提供的函数。这个控制台程序是在Qt Creator中完成的。

 

我们将给出两个完整的代码,分别使用C库和C++库来实现,我们也会为大家分析两者的不同,请读者细心体会。

 

文件包含语句的工作原理:

几乎每一个程序的开头都会看到这样的语句,即文件包含指令:

#include “文件名

或者是:

#include<文件名>

 

编译器遇到文件包含指令时,把指令所指文件的全部内容包含到应用程序中,替代这条文件包含指令,并作为源程序的一部分。

 

实例讲解:

 

 

1.文件包含指令

#include<文件名>形式指定的文件是由系统提供的标准类库文件。如果安装了Microsoft的Visual Studio,则一般的C++类库文件都放在Microsoft Visual Studio的主目录”VC/Include/”下(Visual Studio 6.0则是在VC98/Include下),Qt 4的类库文件都放在Qt 4的主目录”C:/Qt/4.5.0/include”(以我安装的Qt 4.5.0版,采用默认安装SDK方法为例。读者的实际情况请对应查找验证路径)下。编译器会在默认目录下搜索文件包含指令中指定的文件。

 

#include “文件名这种形式一般用于包含用户自己编写的文件。编译程序先在当前目录中查找包含文件,如找不到,再在上面列出的两个缺省目录中查找。建议统一采用这种形式来处理文件包含指令。

 

 

 

2.编写勾三股四弦必五程序

下面举一个使用数学函数的例子来说明这个问题。该程序实现直角三角形斜边求取的功能,其中需要用到开平方的操作。无论是计算机还是人,精确的开平方运算都是一项很困难的工作,C++的数学函数库中提供了开平方操作的函数:

double sqrt(double x);

 

使用它之前需要在文件的开始处加入文件包含语句:

#include “math.h”

 

然后就可以在文件的任何位置使用这个函数。printfscanf函数的声明则包含在标准输入输出类库头文件stdio.h中。

 

3.操作步骤

 

按照实例1的步骤创建一个基于控制台的工程gou3gu4xian5。

 

第1步,创建项目

 

选择菜单“File->New...”,弹出新建(New)对话框,如图所示。

image

图 创建控制台类型的应用程序

 

在其中选择【Projects->Qt Console Application】,创建一个控制台类型的应用程序,然后点击【Choose…】按钮,进入下一步设置。

 

第2步,设置工程名称和路径

 

如图所示,首先通过点击【Browse...】按钮来选择工程文件的存放位置,然后再在【Name:】文本框中输入工程的名称,我们这里是gou3gu4xian5。设置完成后,点击【Next】按钮进入下一步设置。

image

 

图 设置应用程序的保存位置和名称

 

第3步 完成创建

如图所示,Qt Creator根据前面我们提供的信息,给出了该工程的摘要,我们确认无误后,点击【Finish】按钮,完成工程的创建。

 

图5 完成工程的创建

 

 

这时,Qt Creator会把创建完成的工程展现在我们面前,如图6所示,工程中包含了一个gou3gu4xian5.pro文件和一个main.cpp文件。

 

image

图 创建好的工程浏览

 

 

第4步,书写程序代码

我们在Qt Creator的代码编辑器中完成代码的编写。这个程序主要是对main()主函数的修改,在Projects边栏中双击main.cpp,在右边的代码编辑器中输入以下的代码:

image

 

第5步,编译运行程序

 

编译(Ctrl+B)运行(Ctrl+R)程序,得到程序运行的结果如图8所示:

image

 

 

 

图8 程序运行结果

 

说明:C++标准类库包含了大量的应用函数,程序员必须知道如何查找和利用这些类库资源。这里给出一些常用的类库的头文件,如表1所示。

 

 

表1 常用类库函数头文件及其内容

头文件名

包含函数的主要功能

conio.h

文本处理、输入输出函数等

dir.h

目录处理

float.h

定义floatdoublelong double等类型的属性

iostream.h

输入输出流相关操作

malloc.h

内存操作

math.h

数学函数、相关的宏和类型

stdio.h

标准输入输出函数

stdlib.h

整数运算、字符转换、内存管理等

string.h

字符串处理

time.h

与时间相关的操作

windows.h

windows应用程序所需的数据类型和数据结构定义

 

下面是我们使用C++习惯来编写的程序代码,main.cpp文件内容如下:

image

 

结果为:

 

image

 

熟悉C语言的读者不难看出,用C++编写的程序和用C编写的程序在程序结构上是基本相同的,都是以main()函数作为程序的入口,两者都是以一对{}把函数中的语句括起来,而且两者都是以分号作为语句的结束标志。但是,两者也有一些不同之处,C++中是以iostream.h文件作为标准输入输出头文件,C中则是以stdio.h作为标准输入输出头文件;C++中采用符号“<<”作为标准输出,而不是通过printf函数来实现。

 

 

为了进一步理解文件包含的概念,我们将abc、三个变量的定义放到另一文件中,并用文件包含指令将其加入main.cpp中。选择菜单“File->New”,在弹出的【New】对话框中选择“C++->C++ Header File”,如图9所示。

 

 

图9 新建一个C++头文件

 

 

在接下来弹出的【Choose the location】对话框中输入文件名"var.h",保存位置选择默认即可,如图10所示。

 

 

图10 为新文件命名并确定其位置

 

 

将原来main.cpp中的变量声明语句

 

float a = 0.0;
float b = 0.0;
float c = 0.0;

放入到var.h文件中,将该段语句在main.cpp中删除,并在main.cpp前面加入文件包含指令:

 

#include "var.h"

 

 

再次编译运行程序,可以得到和步骤中相同的运行效果。这里不再赘述,请读者自行完成。

 

注意:这里为了演示类库包含语句的使用,才选择了将变量定义放在C++头文件中的,但读者要知道,这并不是推荐的做法。

 

本节重点回顾:

 

C++语言是一种支持模块化的语言,编译器编译应用程序使用到的模块,这样能大大提高编译效率,生成的应用程序也相对比较小。

模块化最大的好处是源代码的重复利用。

Qt 4中包含了可视化程序需要的大部分框架,程序员可以根据需要选择程序的框架结构,而省去了大量重复性的代码编写工作。

模块化给程序员开发带来了巨大的方便,程序员可以根据需要编写自己需要的类库文件,在多个程序中可以以包含文件的形式进行调用;程序员也可以将一个大型的程序划分为功能相对独立的多个部分,对各个部分分别进行编写调试,最后再用文件包含指令将所有的文件整合成一个大的程序,由此也产生了工程(Project)的概念。

顺带提一句,在光鲜的Qt Creator的后面,Qt 4是在用.pro文件管理工程设置等信息。

原文地址:https://www.cnblogs.com/shaoguangleo/p/2805756.html