一、Hello World!
学习了C语言之后,我们可以编写代码向这个世界打招呼。
#include <stdio.h>
int main()
{
printf("Hello World!\n");
return 0;
}
新生婴儿会以自己独特的方式向这个崭新的世界打招呼,C++刚出来后,也算是一个新事物,那C++是否也应该向这个美好的世界来声问候呢?
我们来看下C++是如何来实现问候的。
#include<iostream>
using namespace std;
int main()
{
cout << "Hello world!" << endl;
return 0;
}
二、C++的输入输出相关解释
【1】使用cout标准输出(控制台)和cin标准输入(键盘)时,必须包含<iostream>头文件以及按命名空间使用方法使用std。
【2】使用C++输入输出更方便,不需要像printf()、scanf()输入输出时那样,需要手动控制格式。C++的输入输出可以自动识别变量类型。
#include<iostream>
using namespace std;
int main()
{
const char* str = "hello bit";
cout << str << endl; // 自动识别变量类型
int i = 1;
double d = 1.11;
cout << i << d << endl; // 自动识别变量类型
// 小数点有多少位,cout就输出多少位
cin >> i >> d; // 不需要像C语言一样使用取地址操作符&
cout << i << d << endl;
return 0;
}
Note:
cin、cout与printf()、scanf()各有所长,cin、cout虽然可以自动识别类型,但是printf()、scanf()在某些场景下使用起来却比cin、cout更方便。
#include<iostream>
using namespace std;
struct Student
{
char name[20];
int age;
//...
};
int main()
{
struct Student s = { "张三",18 };
// CPP
cout << "姓名:" << s.name << endl;
cout << "年龄:" << s.age << endl << endl; // CPP的cout不方便,一项一项写很麻烦
// C
printf("姓名:%s\n年龄:%d\n\n", s.name, s.age); //写结构体时,C语言的printf更方便,仅一行代码搞定
return 0;
}
三、std命名空间的使用惯例
std是C++标准库的命名空间,如何展开std使用更合理呢?
我们经常看到一下三种写法:
写法1:使用using namespace 命名空间名称引入
#include <iostream>
using namespace std;
int main()
{
cout << "hello world!" << endl;
return 0;
}
命名空间全部展开,用起来虽然极其方便,但是隔离彻底失效了。这种方式建议大家慎用。
写法2:使用using将命名空间中成员引入
#include <iostream>
using std::cout;
using std::endl;
int main()
{
cout << "hello world" << endl;
return 0;
}
该方式可以用于展开std命名空间中常用的成员,还保有较好的隔离效果。
写法3:加命名空间名称及作用域限定符
#include <iostream>
int main()
{
std::cout << "hello world" << std::endl;
return 0;
}
该方式能够做到最好的命名隔离,但是使用不方便,每次都需要指定域。
Note:
①在日常练习中,建议直接using namespace std即可,这样就很方便。
②using namespace std展开,标准库就全部暴露出来了,如果我们定义跟库重名的类型/对象/函数,就存在冲突问题。虽然这个问题在日常练习中很少出现,但是代码较多、规模大的项目开发中就很容易出现冲突问题。所以建议在项目开发中,使用std::cout这样使用指定命名空间或者using std::cout这样展开常用的库对象/类型等方式。