C++ 标准库

2025-11-26 16:00:19 联动专题

C++ 标准库

是 C++ 标准库中的一个头文件,它包含了 C 语言标准 I/O 库的 C++ 封装,主要用于文件的输入和输出操作。

库定义了一组用于执行输入和输出操作的函数,这些函数可以用于读写文件和控制台。

语法

在使用 库中的函数之前,需要在 C++ 程序的顶部包含这个头文件:

#include

常用函数

库中包含了许多用于文件 I/O 的函数,以下是一些常用的函数:

fopen:打开文件。

fclose:关闭文件。

fread:从文件中读取数据。

fwrite:向文件中写入数据。

fprintf:向文件写入格式化输出。

fscanf:从文件中读取格式化输入。

fgetc:从文件中读取一个字符。

fputc:向文件写入一个字符。

fgets:从文件中读取一行。

fputs:向文件写入一行。

实例

1. 打开和关闭文件:

实例

#include

int main() {

FILE *file = fopen("example.txt", "w"); // 打开文件用于写入

if (file == NULL) {

perror("Error opening file");

return 1;

}

fclose(file); // 关闭文件

return 0;

}

2. 向文件写入数据:

实例

#include

int main() {

FILE *file = fopen("example.txt", "w");

if (file == NULL) {

perror("Error opening file");

return 1;

}

fprintf(file, "Hello, World!n");

fclose(file);

return 0;

}

在 "example.txt" 文件中写入了 "Hello, World!"。

3. 从文件读取数据:

实例

#include

#include

int main() {

FILE *file = fopen("example.txt", "r");

if (file == NULL) {

perror("Error opening file");

return 1;

}

char buffer[100];

while (fgets(buffer, 100, file) != NULL) {

std::cout << buffer;

}

fclose(file);

return 0;

}

从 "example.txt" 文件中读取并输出 "Hello, World!"。

4. 使用 fscanf 和 fprintf 进行格式化输入输出:

实例

#include

int main() {

FILE *file = fopen("data.txt", "w");

if (file == NULL) {

perror("Error opening file");

return 1;

}

fprintf(file, "%d %fn", 42, 3.14159);

fclose(file);

file = fopen("data.txt", "r");

if (file == NULL) {

perror("Error opening file");

return 1;

}

int number;

float pi;

fscanf(file, "%d %f", &number, &pi);

fclose(file);

std::printf("Number: %d, Pi: %fn", number, pi);

return 0;

}

输出结果:Number: 42, Pi: 3.141590

fopen 和 fclose

用于打开和关闭文件。

实例

#include

int main() {

FILE* file = fopen("example.txt", "r");

if (file) {

// 文件操作

fclose(file);

} else {

// 处理错误

}

return 0;

}

fread 和 fwrite

用于从文件中读取和写入数据。

实例

#include

int main() {

FILE* file = fopen("example.bin", "wb");

if (file) {

int data = 12345;

fwrite(&data, sizeof(data), 1, file);

fclose(file);

}

return 0;

}

fseek 和 ftell

用于在文件中移动文件指针和获取文件指针的位置。

实例

#include

int main() {

FILE* file = fopen("example.txt", "r");

if (file) {

fseek(file, 0, SEEK_END); // 移动到文件末尾

long size = ftell(file); // 获取文件大小

fclose(file);

}

return 0;

}

fflush

刷新文件流,将缓冲区中的数据写入文件。

实例

#include

int main() {

FILE* file = fopen("example.txt", "w");

if (file) {

fputs("Hello, World!", file);

fflush(file); // 确保数据立即写入文件

fclose(file);

}

return 0;

}

printf 和 fprintf

用于格式化输出到标准输出或文件。

实例

#include

int main() {

int value = 42;

printf("Value: %d\n", value); // 输出到标准输出

FILE* file = fopen("output.txt", "w");

if (file) {

fprintf(file, "Value: %d\n", value); // 输出到文件

fclose(file);

}

return 0;

}

scanf 和 fscanf

用于格式化输入从标准输入或文件。

实例

#include

int main() {

int value;

scanf("%d", &value); // 从标准输入读取

FILE* file = fopen("input.txt", "r");

if (file) {

fscanf(file, "%d", &value); // 从文件读取

fclose(file);

}

return 0;

}

sprintf 和 sscanf

用于格式化输出到字符串和从字符串中读取。

实例

#include

int main() {

char buffer[50];

int value = 42;

sprintf(buffer, "Value: %d", value); // 输出到字符串

int readValue;

sscanf(buffer, "Value: %d", &readValue); // 从字符串读取

return 0;

}

fgets 和 fputs

用于从文件中读取字符串和写入字符串到文件。

实例

#include

int main() {

FILE* file = fopen("example.txt", "r");

if (file) {

char buffer[100];

if (fgets(buffer, sizeof(buffer), file)) {

// 读取成功

}

fclose(file);

}

file = fopen("example.txt", "w");

if (file) {

fputs("Hello, World!\n", file); // 写入字符串到文件

fclose(file);

}

return 0;

}

getc 和 putc

用于从文件中读取字符和写入字符到文件。

实例

#include

int main() {

FILE* file = fopen("example.txt", "r");

if (file) {

int c = getc(file); // 读取一个字符

fclose(file);

}

file = fopen("example.txt", "w");

if (file) {

putc('A', file); // 写入一个字符

fclose(file);

}

return 0;

}

feof 和 ferror

用于检测文件结束和文件错误。

实例

#include

int main() {

FILE* file = fopen("example.txt", "r");

if (file) {

while (!feof(file)) {

int c = getc(file);

if (ferror(file)) {

// 处理错误

break;

}

// 处理字符

}

fclose(file);

}

return 0;

}

EOF

表示文件结束标志。

实例

#include

int main() {

FILE* file = fopen("example.txt", "r");

if (file) {

int c;

while ((c = getc(file)) != EOF) {

// 处理字符

}

fclose(file);

}

return 0;

}

NULL

表示空指针。

实例

#include

int main() {

FILE* file = fopen("example.txt", "r");

if (file == NULL) {

// 处理文件打开错误

} else {

fclose(file);

}

return 0;

}

注意事项

使用 库时,需要确保正确处理文件打开和关闭,避免资源泄露。

在使用 fopen 时,需要提供正确的文件路径和模式。

使用 fprintf 和 fscanf 时,格式化字符串应该与变量类型匹配。