当前位置:C++技术网 > 资讯 > 练习项目:1 基本框架实现

练习项目:1 基本框架实现

更新时间:2015-06-25 22:43:12浏览次数:1+次

    看这部分前,请阅读《VS中控制台项目创建方法步骤》,本文是接着这个部分而写的。

    第一部分:基本框架实现

    现在问题来了。我们要以什么方式实现框架呢?是直接在main函数中写框架逻辑,还是使用一个单独的模块提供逻辑呢?这还用说吗,当然是要单独的。这样才能方便扩展嘛。如果写在main函数中,以后增加或者删除功能模块(执行转换)时,就不方便。
    所以,现在我们要添加一个框架的头文件和源文件。方法和添加【"convert.h"、"convert.cpp"】一样就不重复了。我就给框架文件取名Afx.h和Afx.cpp。
    为了让大家一步步很好的学习,就不一次性将框架所有的都写在一起,而是分步增加进来。这里的基本框架实现基本的输入输出。框架提供输出函数(我们叫它为框架输出函数)显示输出,在框架输出函数中传入要输出的字符串即可,并提供一个可选的参数,表示是否要换行,默认情况下,是自动换行,如果框架输出函数第二个参数传入false则会在输出一行字符串后自动换行。
    在框架头文件中,包含基本输入输出头文件,并使用标准命名空间。框架输出函数重载了string的版本,那么就要包含string头文件。此时注意,如果用框架实现这个输出,那么在主函数头文件中,就不要包含输入输出头文件了。在使用框架输出函数时,只要在主函数头文件convert.h中包含框架头文件即可,并且有了框架输出函数后就不需要自己写输出,比如C语言版本的printf和C++语言的cout。当然,如果你要直接使用,也是可以的。

    我们在Afx.h中包含输入输出头文件和string头文件以及框架输出函数声明。
    框架头文件代码如下:

/* - 设计开发编写:codexia - */

#include <iostream>// - C语言版本使用stdio.h
using namespace std;// - 标准命名空间,支持cout,cin等,C语言不需要这个
#include <string> // - string使用支持

/* - 输入输出函数支持,函数重载版本,只能是C++语言中使用,纯C中要使用不同的函数名 - */

void AfxMessage(const char * pstrMsg,bool bAddNewLine=true);// - char字符数组版本

void AfxMessage(const string strMsg,bool bAddNewLine=true);// - string版本

    框架头文件说明:
    1. 因为是框架函数,所以带上Afx区别于一般的函数。取名AfxMessage是与MFC的取名习惯一致,这个函数在MFC就是弹出消息的函数名。借此让大家熟悉这个函数,完成的功能是一样的,只是参数和显示形式不一样罢了,你可以自己重载这个函数达到效果。
    2. 返回值类型为void,表示这个函数没有返回值,也不可能失败。
    3. 字符串指针和string字符串都使用const修饰,因为只是显示消息,按照好的编程习惯,这里不可能会修改字符串,所以使用const修饰,防止在函数中修改了字符串。
    4.命名风格采用前面小写字母表示类型,这是Windows命名规范,使用这个规范,可以让我们早点适应Windows命名风格,也有助于我们阅读Windows等函数。
    5. 第二个参数表示是否显示完消息后换行,默认为true,表示会换行。在使用时,如果没有传入第二个参数,则默认换行。如果不想换行,则传入false即可。
    6.这里提供两个输出函数版本,这是C++语言中的函数重载,这样给开发带来便利,我们在框架一定要提供这些重载版本,让开发更加容易。而在C语言中,这两个函数不能重名,C语言没有函数重载的支持。改个函数名即可。

    框架源文件(CPP)代码如下:

#include "Afx.h"

void AfxMessage(const char * pstrMsg,bool bAddNewLine)
{
    cout<<pstrMsg;
    if(bAddNewLine)cout<<endl;
}

void AfxMessage(const string strMsg,bool bAddNewLine)
{
    cout<<strMsg;
    if(bAddNewLine)cout<<endl;
}

    框架源文件(CPP)代码说明:
    1.首先要包含框架头文件,包含这个头文件,也就包含了基本输入输出头文件。
    2.函数代码实现。函数实现中,第二个默认参数就不能保留默认赋值“bool bAddNewLine=true”,而只能使用一个参数,这是基本的语法。
    3.函数中直接输出字符串。这里是C++的版本。如果是C语言,那么就使用printf代替cout这一句。第二句代码就是根据第二个参数来输出换行,C语言中就使用printf输出\n即可。

    在主函数中使用框架输出函数显示字符串,使用很简单。当然这里没有提供格式化输出的支持,需要你自己去扩展哦。

    主函数使用框架输出函数代码如下:

#include "Afx.h"// - 只需包含框架头文件,就支持了基本输入输出
int main()
{
    AfxMessage("this is testing...");// - 换行输出
    AfxMessage("please input:",false);// - 不换行输出
    int i;
    cin>>i;// - 让用户输入。让界面不直接退出的一种方法
    return 0;
}
     主函数代码说明:
    1.只需要包含框架头文件,即可使用基本输入输出函数如cout,cin,或者printf(C语言版)和框架提供的输出函数。
    2.AfxMessage第二个参数如果不传参或者传入true,则支持换行,如果传入false则不换行,可以让用户紧接着输入。
    3.一般VS控制台程序运行完直接退出,可以使用系统提供的函数暂停,当然更简单的办法就是直接提供一个输入操作,即可让界面不退出,然后输入任意键就退出了。
    4.main返回值为int,那么最后必须返回一个整型值。