白话C++编程系列之: 多个文件篇

in programming •  7 years ago 

c++!
上一篇我们一起学习了《白话C++编程系列之: 文件篇》, 我们知道 了文件的概念, 知道了文件在C++编程中的实用和实践.

您的印象深么? 您可点开上面的链接再看一次以加深印象。
关于文件这个概念您有啥想和我沟通的没?我有什么可以帮助您的? 请您在文章末尾留言. ^_^

我们来简单的复习一个文件的概念:
文件是啥?

文件我们这里特指头文件(.h文件, 也有可能是.hpp文件(声明和实现放在一起), .inl文件)和.cpp文件.

文件是组织代码的一种方式.通常.h文件用来写声明(类的,函数等的), .cpp文件用来写实现(类的,函数等的).

C++中的文件在物理上和我们电脑上、手机上、iPad上看到的文件是一样的。
文件都有文件名字,文件的大小,文件的创建时间等属性。
更多的内容请您点开上面文件的链接详细查看。

今天我们来talk about另外一个和文件相关的概念: 多个文件概念。我们由一个文件到多个文件,还是有区别的.
我们已经知道了文件的概念, 理解多个文件的概念会很easy. 多个文件最主要的区别是组织方式

类似我们将我们的电脑硬盘分区(盘),如果只分成一个区(盘),也没有什么可好说的。
如果分成多个区,那么我们就想想到底分成几个区,每个区多大,每个区用来做什么?

我们在写代码,特别是越来越大的项目时, 我们要有组织的将多个文件分类处理,或者分功能处理。

1.多文件是想说啥?


多文件 是指对多个文件的分类或者划分。可以按类别划分,或按功能划分, 分别存放在不同的目录中.

如按类别功能划分.将我们自己声明、定义的常量、功能函数、宏定义等等放在一个目录(文件夹)中,
将用来的库比如boost放在libs目录中, 将编译后的release版本, 和测试用的debug版本放在不同的目录中管理。

这就好比我们将win7装在C:中, 我们将安装包放在 D:\中, 将音乐,视频放在E:\中一样. 方便我们管理和处理.
这比我们把所有东西放在一个盘里方便管理和维护好多了,即使我们只有一个盘,通常我们也会分成多个目录来管理.
不能让我们的电脑变成一锅粥...

您想想自己平时是不是这么做的?分类就是其中一个处理多个文件或者平时处理多种信息的一种简单、有效的方式。

来个例子:

//D:\dev\jinLab\p8_file\p9_fileS\p9_fileS.cpp
//这里的cpp文件就是: p9_fileS.cpp
// p8_file.cpp : 白话C++编程之: 多个文件篇
//
/*
@Author: Albert 小宁
@Web: http://jinLab.com
@WeChatOfficalAccount: 小宁静致远
@Date: 2017-11-12
@KS: https://t.xiaomiquan.com/IeieiEm
*/

#include <iostream>
#include <fstream>
#include <string>
#include "myDefines/globalDefines.h"

多个文件的例子

上面的例子中我们把我们的全局定义文件 globalDefines.h 文件放在了 myDefines 这个目录中.

#include "myDefines/globalDefines.h"

myDefines/globalDefines.h

我们将配置文件放在了 config.ini 放在了 config 目录中.
config.ini放在config目录下

iostream/string/fstream头文件则放在VS2013的安装目录下的
**c:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\ **目录中.
iostream



2.多个文件的应用?(举个例子)


其实大家已经看到在上面我们已经举例说明了多个文件的应用, 主要是方便管理和后期维护。这里不在啰嗦了。^_^





3.多个文件的实践?(动手操作)


看了上面的例子, 您也一定觉得很简单,这不就是我们平时放文件时,建立了不同的目录,然后把不同文件放在不同的目录吗?!
对的,C++中组织多个文件,或者多个函数,多个常量的定义时就是采用相同的方式。
如果您经常组织或者整理您的文件,对这个概念将非常清楚,以及为什么这么做您也一定非常清楚!
您真的太棒了!(道理相通,融会贯通!)

我们现在就用上面举的例子,实践一下.
请打开VS2013或者打开cpp.sh http://cpp.sh来(本次cpp.sh也帮不上你的忙了。它不能组织多个文件)写上如下代码:

头文件: D:\dev\jinLab\p9_fileS\p9_fileS\myDefines\globalDefines.h
头文件globalDefines.h

#pragma  once //防止多次包含同一个头文件 
#include <iostream>
#include <string>

using namespace std;
//找出两个中更大的一个
double GetMax( double dblLeft, double dblRight )
{
    return dblLeft > dblRight ? dblLeft : dblRight;
}

void printSth( std::string const & str2print )
{
    std::cout << str2print << std::endl;
}

class CMyClass
{
public:
    //构造函数
    CMyClass(){}

    //析构函数
    ~CMyClass(){}

    //一个打印函数: 声明
    inline void print();

};


//CMyClass::print() 的实现在这个.inl文件中
#include "myClassInl.inl"

.cpp文件: 调用处: D:\dev\jinLab\p9_fileS\p9_fileS\p9_fileS.cpp
cpp文件

//D:\dev\jinLab\p9_fileS\p9_fileS\p9_fileS.cpp
//这里的cpp文件就是: p9_fileS.cpp
// p9_fileS.cpp : 白话C++编程之: 多个文件篇
//
/*
@Author: Albert 小宁
@Web: http://jinLab.com
@WeChatOfficalAccount: 小宁静致远
@Date: 2017-11-12
@KS: https://t.xiaomiquan.com/IeieiEm
*/

#include <iostream>
#include <fstream>
#include <string>
#include "myDefines/globalDefines.h"

int main( int argc, char * argv[ ] )
{
    printSth( "今天是周日,天气非常Sunny, 祝您周末愉快!" );

    std::string strCfgName = "config/config.ini";
    std::fstream ifs( strCfgName,std::ios_base::in );
    if ( !ifs.is_open() )
    {
        std::cout << "不能打开文件: " << strCfgName << std::endl;
        ifs.close();
        return -1;
    }

    string strLine;
    while ( getline( ifs, strLine ) )
    {
        std::cout << strLine << std::endl;
        //printSth( strLine );
    }

    ifs.close();
    return 0;
}

config.ini文件: D:\dev\jinLab\p9_fileS\p9_fileS\config\config.ini
config.ini文件

url = "http://jinLab.com"
google = "https://google.com/ncr"

myClassInl文件: D:\dev\jinLab\p9_fileS\p9_fileS\myDefines\myClassInl.inl
myClassInl.inl文件

void CMyClass::print()
{
    printSth( "I am function print() of class CMyClass!" );
}

我的代码结构目录
代码目录结构

如果使用的是VS2013, 那么我们按F7, 如果没有错误的话, 就会编译生成我们的程序,并且会有下面的输出:
请看,这是程序的输出结果图.
vs2013语句: 程序输出

怎么样?哈哈
恭喜您, 今天您和我一起学习了多个文件这个概念.
多个文件

多文件 是指对多个文件的分类或者划分。可以按类别划分,或按功能划分, 分别存放在不同的目录中.

如按类别功能划分.我们将自己声明、定义的常量、功能函数、宏定义等等放在一个目录(文件夹)中,
将用来的库比如boost放在libs目录中, 将编译后的release版本, 和测试用的debug版本放在不同的目录中管理。
这就好比我们将win7装在C:中, 我们将安装包放在 D:\中, 将音乐,视频放在E:\中一样. 方便我们管理和处理.

多个文件的应用
多个文件的实践

怎么样?^-^ 多个文件的概念很简单吧?它就是我们平时管理文件的一种方式(道理相同,融会贯通)。
您是如何理解它的?能不能举几个例子? 动手写、组织起来吧.



白话C++编程系列之:下期预告


白话C++编程系列之七: 入口函数篇
* 1. 入口函数是指什么?
* 2. 入口函数应用例子
* 3. 入口实践例子



延伸阅读


常量

在编程中值保存不变的量。修饰常量我们常用const关键字.

//常量iPi的值为3.1415926.
double const iPi=3.1415926; 

《白话C++编程系列之: C++入门与实践大纲》

《白话C++编程系列之一: 本质篇》

《白话C++编程系列之二: 变量篇》

《白话C++编程系列之三: 类型篇》

《白话C++编程系列之四: 语句篇》

《白话C++编程系列之五: C++是啥?》

《白话C++编程系列之六: 表达式(语句之爱恨)》

《白话C++编程系列之七: 函数篇》

《白话C++编程系列之八: 文件篇》








Wanna learn English in USA? Click this link:
talk English in USA:在美国学英文

对医学感兴趣? 三体·生命依托

请大家多多动手,让编程也成为您的一种爱好和生产力。
戳右上角 小宁静致远 或扫码关注我, 欢迎、感激传播! ^_^
期待和您多交流、共成长。谢谢!
扫描关注小宁静致远
精灵实验室? http://jinLab.com
留言区就是您的天下,欢迎吐槽、拍砖!

Why NOT let programming a skill of you?
Just click the blue top-right 小宁静致远 or scan the 2D code above to follow me & thanks for sharing me to your friends! ^_^
Hope we can communicate each other & improve ourselves together. Thanks!
JinLab? http://jinLab.com
Any ideas? Please add comments to the article!

学习C++? Lear C++? 请加入我的知识星球: Join my Knowledge Space:
白话C++编程:C++入门与实践 https://t.xiaomiquan.com/IeieiEm
oral C++ programming and practice! https://t.xiaomiquan.com/IeieiEm
加入白话C++ programming
不让好机会溜走,飞向白话C++编程知识星球!不让好机会溜走白话C++编程知识星球

鼓励我的创作? Encourage me?
您的鼓励我的动力! Appreciate your praise!

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!