一、<iostream>
这个头文件提供了输入输出流的功能。它包含了用于输入(如cin
)和输出(如cout
)的对象和操作符。使用这个头文件,可以方便地进行控制台输入输出操作。
例如:
#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl;
int num;
std::cin >> num;
return 0;
}
二、<vector>
<vector>
头文件用于支持动态数组,即向量容器。向量可以根据需要自动调整大小,提供了方便的操作方法,如添加元素、删除元素、访问元素等。
例如:
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
vec.push_back(6);
for (int i : vec) {
std::cout << i << " ";
}
return 0;
}
三、<string>
用于处理字符串。提供了字符串类std::string
,以及相关的操作函数。可以方便地进行字符串的拼接、查找、替换等操作。
例如:
#include <iostream>
#include <string>
int main() {
std::string str1 = "Hello";
std::string str2 = "World";
std::string str3 = str1 + " " + str2;
std::cout << str3 << std::endl;
return 0;
}
四、<algorithm>
这个头文件包含了各种算法,如排序、查找、遍历等。可以对容器中的元素进行高效的操作。
例如:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {5, 3, 1, 4, 2};
std::sort(vec.begin(), vec.end());
for (int i : vec) {
std::cout << i << " ";
}
return 0;
}
五、<cmath>
提供了数学函数,如平方根、三角函数、指数函数等。
例如:
#include <iostream>
#include <cmath>
int main() {
double num = 9.0;
double result = std::sqrt(num);
std::cout << "Square root of " << num << " is " << result << std::endl;
return 0;
}
六、<fstream>
用于文件输入输出操作。可以打开、读取、写入文件。
例如:
#include <iostream>
#include <fstream>
int main() {
std::ofstream outfile("test.txt");
outfile << "Hello, file!" << std::endl;
outfile.close();
std::ifstream infile("test.txt");
std::string line;
if (infile.is_open()) {
while (getline(infile, line)) {
std::cout << line << std::endl;
}
infile.close();
}
return 0;
}
七、<cstdlib>
这个头文件提供了一些通用的工具函数,包括随机数生成、内存分配和转换函数等。例如,可以使用rand()
函数生成随机数,malloc()
和free()
函数进行动态内存分配和释放。
八、<ctime>
用于处理时间相关的操作。可以获取当前时间、计算时间间隔等。其中time()
函数返回当前时间的秒数,clock()
函数可以测量程序的运行时间。
例如:
#include <iostream>
#include <ctime>
int main() {
std::time_t now = std::time(nullptr);
std::cout << "Current time: " << std::ctime(&now);
return 0;
}
九、<cctype>
提供了用于字符处理的函数。可以判断字符是否为字母、数字、空白字符等。例如,isalpha()
判断字符是否为字母,isdigit()
判断字符是否为数字。
十、<cstring>
用于处理 C 风格的字符串操作,如字符串复制、比较、拼接等。其中strcpy()
用于复制字符串,strcmp()
用于比较字符串,strcat()
用于拼接字符串。
例如:
#include <iostream>
#include <cstring>
int main() {
char str1[] = "Hello";
char str2[] = "World";
char result[20];
strcpy(result, str1);
strcat(result, " ");
strcat(result, str2);
std::cout << result << std::endl;
return 0;
}
十一、<exception>
支持异常处理机制。可以使用try-catch
块来捕获和处理异常。异常处理可以提高程序的健壮性,避免程序在出现错误时崩溃。
例如:
#include <iostream>
#include <exception>
int main() {
try {
throw std::runtime_error("An error occurred.");
} catch (const std::exception& e) {
std::cout << "Caught exception: " << e.what() << std::endl;
}
return 0;
}
十二、<initializer_list>
允许使用初始化列表来初始化对象。这个头文件在 C++11 中引入,使得可以方便地使用初始化列表来构造函数参数。
例如:
#include <iostream>
#include <initializer_list>
class MyClass {
public:
MyClass(std::initializer_list<int> list) {
for (int i : list) {
std::cout << i << " ";
}
}
};
int main() {
MyClass obj = {1, 2, 3, 4, 5};
return 0;
}
十三、<memory>
提供了智能指针和内存管理的工具。例如,std::unique_ptr
和std::shared_ptr
可以自动管理动态分配的内存,避免内存泄漏。
例如:
#include <iostream>
#include <memory>
class MyClass {
public:
MyClass() {
std::cout << "Constructor called." << std::endl;
}
~MyClass() {
std::cout << "Destructor called." << std::endl;
}
};
int main() {
std::unique_ptr<MyClass> ptr1 = std::make_unique<MyClass>();
{
std::shared_ptr<MyClass> ptr2 = std::make_shared<MyClass>();
}
return 0;
}
十四、<functional>
支持函数对象、函数指针和 lambda 表达式等。可以使用std::function
来存储和调用可调用对象,方便地进行函数的传递和组合。
例如:
#include <iostream>
#include <functional>
void func(int x) {
std::cout << "Function called with " << x << std::endl;
}
int main() {
std::function<void(int)> f = func;
f(10);
return 0;
}
这些头文件只是 C++ 众多头文件中的一部分,每个头文件都提供了特定的功能和工具,程序员可以根据需要选择合适的头文件来实现各种功能。