c++基础1

199 阅读3分钟

c++预处理和iostream文件

下面简要介绍一下需要知道的一些知识。如果程序上要使用c++输入或者输出工具,请提供这样两行代码;

#include <iostream>
using namespace std

可使用其他代码代替第二行,这里使用这行代码旨在简化该程序。为使程序正常工作,只需知道这些。下面深入介绍这些内容。

c++和c一样,也使用一个预处理器,该程序在进行主编译之前对源文件进行处理。不必执行任何特殊的操作调用·该预处理器,它会在编译时自动运行:

#include <iostream>  // a preprocessor directive

该编译指令导致预处理器将iostream文件的内容添加到程序中。这是一种典型的预处理操作,在源文件被编译之前,替换或添加文本。

这提出了一个问题:为什么要将iostream文件的内容添加到程序中呢?答案涉及程序与外部世界之间的通信。iostream中的io指的是输入(进入程序的信息)和输出(从程序中发送出去的信息)。c++的输入/输出方案涉及iostream文件中的多个定义。为了使用cout来显示消息,第一个程序需要这些定义。#include编译指令导致iostream文件的内容随源代码文件的内容一起被发送给编译器。实际上,iostream文件的内容将取代程序中的代码行#include < iostream > .原始文件没有被修改,而是将源代码文件和iostream组合成一个复合文件,编译的下一个阶段将使用该文件。

头文件名

像iostream这样的文件叫做包含文件(include file)--由于她们被包含其他文件中,也叫头文件(header file)--由于她们被包含在文件的起始处。c++编译器自带了很多头文件,每个头文件都支持一组特定的工具。c语言的传统是,头文件使用拓展名h,将其作为一种通过名称标识文件类型的简单模式。例如,头文件math.h支持各种C语言数学函数,但c++头文件的用法变了。现在,对老式c的头文件保留了拓展名h,而c++头文件则没有拓展名。有些c头文件被转换为c++头文件,这些文件被重新命名,去掉了拓展名h(使成为c++风格的名称),并在文件名称前面加上前缀c(表明来自c语言)。例如,c++版本的math.h为cmath.c。有时c头文件的c版本和c++版本相同,而有时候新版本做了一些修改,对于纯粹的c++头文件(如iostream)来说,去掉h不只是形式上的变化,没有h的头文件也可以包含名称空间--本章的下一个主题。表2.1对头文件的命名约定进行了总结。

头文件命名约定.PNG

使用cout 进行c++输出

现在我们来看一段代码

count <<  "helli world";

双引号括起的部分是要打印的消息。在c++中,用双括号括起的一系列字符叫做字符串,因为它是由若干字符组合而成的。**<< 符号表示该语句将把这个字符串发送给count;**该符号指出了信息流动的路径。count是什么呢?它是一个预定义的对象,知道如何显示字符串,数字,和单个字符串。

控制符endl

count << endl

endl是一个特殊的c++符号,表示一个重要的概念:重起一行。在输出流中插入endl将导致屏幕光标移到下一行开头。诸如endl等对于count来说有特殊含义的特殊符号被叫做控制符(mainpulator).和count一样,endl也是在头文件iostream中定义的,且位于名称空间tsd中。

打印字符时,count不会自动移动到下一行。

换行符

c++还提供了另一种在输出中指示换行的旧方法:c语言\n

count << "hello world\n";

c++语句

c++程序是一组函数,而每个函数又是一组语句。c++有好几种语句,下面介绍其中的一些。程序清单2.2提供了两种新的语句。声明语句创建变量,赋值语句给该变量提供一个值。另外,该程序还演示了count的新功能。

#include <iostream>

int main() {
    //std::cout << "Hello, World!" << std::endl;
    using namespace std;
    int carrots;
    carrots=25;
    cout << "I have";
    cout << carrots;
    cout << "carrots";
    cout << endl;
    carrots=carrots-1;
    cout << "Crunch,crunch,Now I have " << carrots << " carrots"  << endl;
    return 0;
}
结果
I have25carrots
Crunch,crunch,Now I have 24 carrots

其他c++语句

再来看几个c++语句的例子。要求在程序运行的时输入一个值,为实现这项任务,它使用了cin,这是与count对应的用于输入的对象。另外,该程序还演示了count对象的多功能性。

#include <iostream>

int main() {
    //std::cout << "Hello, World!" << std::endl;
    using namespace std;
    int carrots;
    cout << "how many carrots do you hava?" << endl;
    cin >> carrots;
    cout << "here are two more";
    carrots= carrots+2;
    cout << "now you have "  << carrots << "carrots" << endl;
    return 0;
}
结果
how many carrots do you hava?
12
here are two morenow you have 14carrots