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

C++逐行读取特定格式文件的实现问题求助

解决方案:处理任务约束文件

我来帮你搞定这个文件处理的问题!根据你描述的文件格式,我们可以用Python来轻松实现需求——读取文件、解析每行的任务和约束,最后把数据结构化存储起来。

先明确需求细节

你的文件结构是:

  • 第一行是任务的总数量(比如示例里的11)
  • 后续每行对应一个任务:开头是任务名称,后面跟着若干约束名称,最后以0结尾(这个0是行的终止符,不需要作为约束存储)

完整代码示例(按行存储的文件)

如果你的文件是每行对应一个任务的格式(第一行是总数量,后续每行一个任务),用这个版本:

# 打开文件(替换成你的文件路径)
with open('task_constraints.txt', 'r') as f:
    # 读取第一行,获取任务总数
    total_tasks = int(f.readline().strip())
    
    # 创建字典存储任务和对应的约束
    task_constraints = {}
    
    # 循环读取每一行任务数据
    for _ in range(total_tasks):
        # 读取一行并分割成字符串列表
        line = f.readline().strip()
        if not line:
            continue  # 跳过空行(如果有的话)
        
        # 转换为整数列表
        parts = list(map(int, line.split()))
        
        # 提取任务名称(第一个元素)和约束列表(去掉最后一个0)
        task_name = parts[0]
        constraints = parts[1:-1]  # 从第二个元素到倒数第二个(跳过末尾的0)
        
        # 存入字典
        task_constraints[task_name] = constraints

# 打印结果验证
for task, cons in task_constraints.items():
    print(f"任务 {task} 的约束:{cons}")

代码解释

  1. 文件读取:用with open()上下文管理器,自动处理文件关闭,避免资源泄漏。
  2. 获取任务总数:读取第一行并转成整数,确定后续要读取多少行任务数据。
  3. 逐行解析:
    • 每行分割成字符串后转成整数列表
    • 第一个元素是任务名,parts[1:-1]提取约束(跳过最后一个终止符0)
  4. 结构化存储:用字典存储,方便后续根据任务名快速查找约束。

适配所有数据在一行的情况

如果你的文件里所有数据是一行连续的(比如你给出的示例字符串),那需要调整代码来逐个提取任务块:

with open('task_constraints.txt', 'r') as f:
    # 读取所有内容并转成整数列表
    all_data = list(map(int, f.read().strip().split()))
    
    total_tasks = all_data[0]
    current_index = 1
    task_constraints = {}
    
    for _ in range(total_tasks):
        # 从当前位置开始,找到第一个0的索引
        end_index = all_data.index(0, current_index)
        # 提取任务块:从current_index到end_index
        task_block = all_data[current_index:end_index+1]
        task_name = task_block[0]
        constraints = task_block[1:-1]
        task_constraints[task_name] = constraints
        # 更新当前索引到下一个任务的起始位置
        current_index = end_index + 1

# 打印结果
for task, cons in task_constraints.items():
    print(f"任务 {task} 的约束:{cons}")

针对你示例数据的输出

无论用哪个版本,运行后都会得到符合预期的结果:

任务 1 的约束:[]
任务 2 的约束:[8]
任务 3 的约束:[8]
任务 4 的约束:[5, 10]
任务 5 的约束:[8]
任务 6 的约束:[1, 3]
任务 7 的约束:[5]
任务 8 的约束:[11]
任务 9 的约束:[6]
任务 10 的约束:[5, 7]
任务 11 的约束:[]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:21:43