You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++如何按列读取文件 提取第一列最大值的实现方法

C++读取数字文件问题解答

一、查找第一列最大值是否需要先按列读取

不需要。你给出的文件是每行固定4个空格分隔的整数,仅查询第一列最大值时不需要全量按列存储所有数据,按行读取后仅提取每行第一个字段即可,性能开销更低。

二、代码实现

1. 仅查找第一列最大值

#include <iostream>
#include <fstream>
#include <climits>

int main() {
    std::ifstream inputFile("numbers.txt"); // 替换为你的实际文件路径
    if (!inputFile.is_open()) {
        std::cerr << "文件打开失败,请检查路径是否正确" << std::endl;
        return 1;
    }

    int firstCol, discard;
    int maxVal = INT_MIN;
    // 每次读取第一列后,丢弃当前行剩余3个数字即可
    while (inputFile >> firstCol >> discard >> discard >> discard) {
        if (firstCol > maxVal) {
            maxVal = firstCol;
        }
    }

    std::cout << "第一列最大值为:" << maxVal << std::endl;
    inputFile.close();
    return 0;
}

运行上面的代码,你给出的示例文件输出结果为23。

2. 全量按列读取所有数据

如果后续有其他按列计算需求,可以将每列数据单独存储到容器中:

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

int main() {
    std::ifstream inputFile("numbers.txt");
    if (!inputFile.is_open()) {
        std::cerr << "文件打开失败,请检查路径是否正确" << std::endl;
        return 1;
    }

    // 共4列,cols[0]对应第一列所有数据
    std::vector<std::vector<int>> cols(4);
    int n1, n2, n3, n4;
    while (inputFile >> n1 >> n2 >> n3 >> n4) {
        cols[0].push_back(n1);
        cols[1].push_back(n2);
        cols[2].push_back(n3);
        cols[3].push_back(n4);
    }

    // 测试输出第二列所有数值
    std::cout << "第二列所有数据:";
    for (int num : cols[1]) {
        std::cout << num << " ";
    }

    inputFile.close();
    return 0;
}

补充说明:C++的流提取运算符>>默认会自动跳过空格、换行符等空白字符,不需要你手动处理行分隔,只要文件结构是固定每4个数字为一组,不管换行规则如何都能正常读取。


内容的提问来源于stack exchange,提问作者xmoratax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 05:00:05