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

如何使用C++的getline函数提取文本文件中|分隔符间的数据?

嘿,这个需求我之前处理过类似的,给你分享几种实用的实现方式,分不同场景来梳理:

Python 实现(最灵活通用)

如果你用Python处理,这应该是最顺手的方案,能轻松处理文件读取、分割和清洗:

首先,你的文本每行格式是 | No. | name. | product. | price. |,直接按|分割后,会得到包含空白和空字符串的列表,我们需要先清洗这些无效内容:

with open('your_data.txt', 'r', encoding='utf-8') as file:
    # 逐行读取文件
    for line in file:
        # 按|分割当前行的所有内容
        raw_segments = line.split('|')
        # 清洗每个分段:去掉前后空白,过滤掉空的无效分段
        valid_segments = [seg.strip() for seg in raw_segments if seg.strip()]
        
        # 现在valid_segments里就是每个干净的分隔段了
        for idx, seg in enumerate(valid_segments, 1):
            print(f"第{idx}个分隔段:{seg}")
            # 如果要拆分这个段里的单词/音节,直接用split()按空白分割
            words = seg.split()
            print(f"该段包含的单词:{words}\n")

额外提示

如果你的数据里字段内部可能包含|(虽然你说用|做分隔符,但以防万一),可以用Python内置的csv模块来解析,它能处理这种复杂的分隔场景:

import csv

with open('your_data.txt', 'r', encoding='utf-8') as file:
    # 指定分隔符为|,同时跳过字段前后的空白
    reader = csv.reader(file, delimiter='|', skipinitialspace=True)
    for row in reader:
        # 过滤掉空字符串(因为行首行尾的|会产生空元素)
        valid_segments = [seg for seg in row if seg]
        print(valid_segments)
Bash 脚本实现(Linux/Unix环境快速处理)

如果是在终端环境下想快速处理,用awk或者cut+sed组合就能搞定:

用awk的方案

awk -F'|' '{
    for(i=1; i<=NF; i++){
        # 去掉字段前后的空白
        gsub(/^[[:space:]]+|[[:space:]]+$/, "", $i)
        # 只输出非空的有效分段
        if($i != "") print $i
    }
}' your_data.txt

用cut+sed的组合

# cut提取除了第一个空字段外的所有内容,再用sed处理空白和分割
cut -d'|' -f2- your_data.txt | sed 's/^[[:space:]]*//; s/[[:space:]]*$//; s/[[:space:]]*|[[:space:]]*/\n/g'
核心思路总结

不管用哪种语言,核心步骤都是这三步:

  • 按分隔符|拆分每行内容
  • 清洗每个分段:去掉前后的空白字符
  • 过滤掉拆分后产生的空字符串(因为行首和行尾的|会导致空元素)

如果还要进一步把每个分段拆成单词/音节,直接对清洗后的分段按空白分割就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:27:49