当前位置:首页 C++ > 正文

c++从文件中读取数据到数组

作者:野牛程序员:2023-05-18 21:51:22 C++阅读 3642

在C++中,可以使用文件流对象 (ifstream) 来从文件中读取数据到数组。以下是一个示例代码,演示如何读取文件中的数据到数组中:

#include <iostream>
#include <fstream>
#include <vector>

int main() {
    std::ifstream inputFile("data.txt"); // 打开文件

    if (!inputFile) {
        std::cerr << "无法打开文件." << std::endl;
        return 1;
    }

    std::vector<int> data; // 创建一个整数向量来存储数据

    int num;
    while (inputFile >> num) { // 从文件中读取整数
        data.push_back(num); // 将整数添加到向量中
    }

    inputFile.close(); // 关闭文件

    // 打印数组中的数据
    for (int i = 0; i < data.size(); i++) {
        std::cout << data[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}

在上面的代码中,假设数据文件名为 data.txt,其中包含一系列整数,每个整数占据文件的一行。代码首先尝试打开文件,如果打开失败,则输出错误消息并返回。然后,它使用一个 while 循环从文件中读取整数,并将它们添加到 std::vector<int> 类型的向量中。最后,它关闭文件,并打印向量中的数据。

请确保将实际的文件名和文件路径替换为您要读取的文件的实际名称和路径。另外,请确保文件中的数据与代码中期望的数据类型一致。这里使用的是整数数据作为示例,如果文件中包含其他类型的数据,请相应地调整代码。

如果你不想使用 <fstream><vector> 头文件来实现从文件中读取数据到数组,你可以使用 <cstdio> 头文件中的函数和原始的 C 数组来完成任务。下面是一个示例代码:

#include <iostream>
#include <cstdio>

const int MAX_SIZE = 100; // 数组的最大大小

int main() {
    FILE* file = std::fopen("data.txt", "r"); // 打开文件

    if (!file) {
        std::cerr << "无法打开文件." << std::endl;
        return 1;
    }

    int data[MAX_SIZE]; // 创建一个整数数组来存储数据
    int count = 0; // 用于计算读取的整数数量

    int num;
    while (std::fscanf(file, "%d", &num) != EOF && count < MAX_SIZE) { // 从文件中读取整数
        data[count++] = num; // 将整数添加到数组中
    }

    std::fclose(file); // 关闭文件

    // 打印数组中的数据
    for (int i = 0; i < count; i++) {
        std::cout << data[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}

在上面的代码中,使用 FILE* 类型的指针来表示文件,使用 std::fopen 函数打开文件,"r" 参数表示以只读模式打开文件。然后,使用 std::fscanf 函数从文件中读取整数,并将它们存储到预先定义的整数数组中。%d 格式说明符用于读取整数。count 变量用于跟踪读取的整数数量,并防止数组溢出。最后,使用 std::fclose 函数关闭文件,并打印数组中的数据。

请确保将实际的文件名和文件路径替换为您要读取的文件的实际名称和路径。另外,请确保文件中的数据与代码中期望的数据类型一致。这里使用的是整数数据作为示例,如果文件中包含其他类型的数据,请相应地调整代码。

这种方法使用了 C 的标准文件操作函数,因此不需要包含 <fstream><vector> 头文件。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击