一、实例
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, world!" << endl;
return 0;
}
输出的结果为:
Hello, world!
D:\C++CodeProject\Project1\x64\Debug\Project1.exe (进程 90104)已退出,代码为 0。
按任意键关闭此窗口. . .
你可以用 "\n"
代替以上代码里的 endl
。
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, world!" << "\n";
return 0;
}
输出结果相同!
二、C++中 “\n” 与 endl 的区别是什么?
“\n” 表示内容为一个回车符的字符串。std::endl 是流操作子,输出的作用和输出 “\n” 类似,但可能略有区别。
std::endl 输出一个换行符,并立即刷新缓冲区。
例如:
std::cout << std::endl;
相当于:
std::cout << '\n' << std::flush;
或者
std::cout << '\n'; std::fflush(stdout);
由于流操作符 << 的重载,对于 ‘\n’ 和 “\n”,输出效果相同。
对于有输出缓冲的流(例如cout、clog),如果不手动进行缓冲区刷新操作,将在缓冲区满后自动刷新输出。不过对于 cout 来说(相对于文件输出流等),缓冲一般体现得并不明显。但是必要情况下使用 endl 代替 ‘\n’ 一般是个好习惯。
对于无缓冲的流(例如标准错误输出流cerr),刷新是不必要的,可以直接使用 ‘\n’。
三、学习笔记
在 C++ 中,分别使用.h 和.cpp 来定义一个类。
.h 中存放类的声明,函数原型(放在类的声明中)。
.cpp 存放函数体。
也就是说,一个存放声明(declaration),一个存放定义(definition)。
如果我们在一个头文件里声明了一个函数,当我们需要定义这个函数(这个定义是唯一的,也就是只能定义一次),或者需要使用这个函数时,我们在 cpp 中需要 include 这个头文件。
同样地,如果我们在一个头文件里声明了一个类,当我们需要定义类里的成员函数,或者我们需要使用这个类时,我们在 cpp 中需要 include 这个头文件。
<> 先去系统目录中找头文件,如果没有在到当前目录下找。所以像标准的头文件 stdio.h、stdlib.h 等用这个方法。
" " 首先在当前目录下寻找,如果找不到,再到系统目录中寻找。 这个用于 include 自定义的头文件,让系统优先使用当前目录中定义的。
“\n” 表示一个字符串,只有一个数据是回车符。
‘\n’ 表示一个字符。
这两个在输出上是一样的!
如果想显示多行文本,如下:
#include <iostream>
using namespace std;
int main()
{
cout<<"...............\n"
<<"Hello, world!\n"
<<"Welcome to c++\n"
<<"...............\n";
return 0;
}
输出结果为:
...............
Hello, world!
Welcome to c++
...............
D:\C++CodeProject\Project1\x64\Debug\Project1.exe (进程 83728)已退出,代码为 0。
按任意键关闭此窗口. . .
不用一直这样 cout 多行插入。
真正的开发过程中, 尽量避免使用 using namespace std; 等直接引入整个命名空间,否则会因为命名空间污染导致很多不必要的问题, 比如自己写的某个函数,名称正好和 std 中的一样, 编译器会不知道使用哪一个, 引起编译报错, 建议使用:
std::cout << "Hello World" << std::endl;
cout 流速度较慢,如果速度过慢可以用 <stdio.h> 库中的 printf() 格式化输出函数,不需要 using namespace std;。
它的格式为:
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
printf("hello world!");
return 0;
}
输出结果为:
hello world!
D:\C++CodeProject\Project1\x64\Debug\Project1.exe (进程 83496)已退出,代码为 0。
按任意键关闭此窗口. . .
注意:printf() 中不能使用 endl!
:: 在 C++ 中表示作用域,和所属关系。