C++学习之旅记录hello world

一个很有意思的故事,有一个程序员老了,闲来无事的他开始找自己的兴趣爱好。他发现写毛笔字是一个非常不错的休闲娱乐方式,于是它买来了文房四宝。然后准备好一切就绪工作,大笔一挥写下了一个字符串“hello world!”哈哈,我还是来写我的第一个 C++ hello world 吧

从输入输出开始
c++提供了两个用于处理输入和输出的预定义对象(cin和cout),他们分别是istream和ostream类的实例,这两个类是在iostream文件中定义的

#include <iostream> //头文件、也叫包含文件

int main()
{
    using namespace std; //编译指令

    cout << "hello world!" << endl; //这里是endl不是end1

    return 0;
}

gcc hello.c  
./a.out

类比C语言

#include <stdio.h> int main() { printf("hello world!\n);
    return 0;
}

g++ hello.cpp
./a.out

以上两个代码的执行效果是一样的。

#include <iostream>

int main()
{
    using namespace std;
    int num;
    cin >> num;
    cout << num << endl;
    return 0;
}
#include <stdio.h>

int main()
{
    int num;
    scanf("%d", &num);
    printf("%d\n", &num);
    return 0;
}

以上两个代码的执行效果是一样的。

需要注意的是

在C语言中我们常使用的scanf、printf都是包含在stdio.h标准输入输出头文件中而在C++中,从概念上,输出是一个流,即从程序流出的一系列字符。cout对象表示这种流,其属性是在iostream文件中定义的。cout的对象属性包含一个插入操作符 (<<)它可以将其右侧的信息插入到流中。因此下面的语句
cout << "hello world."; //注意分号
 将把字符串“hello world." 插入到输出流中。因此,与其说程序显示了一条消息,不如说它将字符串插入到了输出流中。细心的人会发现 << 和我们在C语言中的左移操作符一样。其实这是一个重载的例子。通过重载,同一个操作符将会有不同的含义。编译器会根据上下文来确定操作符的含义。C本身也有这样的例子。比如 * 既可以在算术运算符中表示乘号,也可以用作指针

控制符endl //它是endl不是end1.在我的编译器下字体一模一样。我就给看错了

cout << endl;  
//endl是一个特殊的C++符号。表示一个很重要的概念:重起一行。在输出流中插入endl将导致屏幕的光标移到下一行的开头。诸如endl等对于cout来说有特殊函数的特殊符号被称为控制符。和cout一样,endl也是包含在iostream中定义的,且位于名称空间std中。

//C++其实也支持这种写法
cout << "\n";   //两者一样的效果,看个人喜好

上面提到一个名称空间的概念:下面介绍一下

 std 是一个命名空间,不同的命名空间可以有相同的类名被定义。
 using namespace std;就是指明下面的程序使用std
 如果不用这句指明的话就要用std::string
 string是std空间中定义的也可以在全局空间中定义,只要名字空间不一样即可..)..否则可以默认名字空间中有std.便不用std::来修饰它是C++新标准中有的,解决多人作编大程序时名字冲突问题。
  比如A B两个班都有叫张三的人,你要使用A班的张三,必然要先指名是A班这个名字空间(namespace),然后你对张三的所有命令才能达到你的预想,不会叫错人 如果你用#include<iostream.h>就不需写这句话(旧标准)。但是如果你#include<iostream>就必须要写。

你可能感兴趣的:(C++,endl,cout,名称空间)