01使用 cout 输出 "Hello, World!"¶
以下是一个简单的 C++ 程序,通过标准输出流 cout 打印 "Hello, World!":
#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl;
return 0;
}
代码解析¶
#include <iostream>:引入标准输入输出库,以便使用cout和endl。std::cout << "Hello, World!":使用cout输出字符串 "Hello, World!"。std::endl:换行并刷新输出缓冲区。return 0;:表示程序正常结束。
运行方式¶
- 将代码保存为
hello.cpp。 - 使用 C++ 编译器(如
g++)编译:
g++ hello.cpp -o hello - 运行生成的可执行文件:
./hello
输出结果¶
程序运行后,终端将显示:
Hello, World!
cout 的基本概念¶
cout 是 C++ 标准库中 iostream 提供的标准输出流对象,用于将数据输出到控制台。它是 ostream 类的实例,通常与插入运算符 << 配合使用。
头文件引入¶
使用 cout 需要包含 <iostream> 头文件:
#include <iostream>
基本用法¶
cout 通过 << 运算符链式输出多个数据:
std::cout << "Hello, World!" << std::endl;
std::endl 用于换行并刷新输出缓冲区。
输出不同类型的数据¶
cout 支持多种数据类型的自动格式化输出:
int num = 42;
double pi = 3.14159;
char ch = 'A';
std::cout << "Integer: " << num << "\n";
std::cout << "Double: " << pi << "\n";
std::cout << "Char: " << ch << "\n";
控制输出格式¶
通过 <iomanip> 头文件可以控制输出格式:
设置浮点数精度¶
#include <iomanip>
double value = 3.141592653589793;
std::cout << std::fixed << std::setprecision(2) << value; // 输出 3.14
设置宽度和对齐¶
int n = 42;
std::cout << std::setw(10) << std::left << n; // 左对齐,宽度为10
进制转换¶
int num = 255;
std::cout << "Hex: " << std::hex << num; // 输出 ff
std::cout << "Oct: " << std::oct << num; // 输出 377
缓冲区管理¶
cout 的输出通常是缓冲的,以下方法可以强制刷新缓冲区:
- 使用 std::endl(换行并刷新)。
- 使用 std::flush(仅刷新不换行)。
- 使用 std::cerr 或 std::clog 输出错误或日志信息(无缓冲或部分缓冲)。
性能优化¶
频繁使用 std::endl 会影响性能,因为会多次刷新缓冲区。在需要高性能输出的场景中,建议使用 \n 代替:
std::cout << "High-performance output\n";
重载 << 运算符¶
可以为自定义类型重载 << 运算符以实现直接输出:
class Point {
public:
int x, y;
friend std::ostream& operator<<(std::ostream& os, const Point& p) {
os << "(" << p.x << ", " << p.y << ")";
return os;
}
};
Point p{1, 2};
std::cout << p; // 输出 (1, 2)
注意事项¶
cout是线程不安全的,多线程环境下需要同步机制。- 输出顺序由
<<运算符的从左到右求值顺序保证。 - 避免在多个线程中同时操作
cout,可能导致输出混乱。