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

C++如何从TXT文件读取以|分隔的书籍信息并映射到结构体?

嘿,我来帮你解决这个读取书籍信息的问题!你之前只读到整行内容,应该是没对每行的字符串做分割处理,直接把整行赋值给了标题字段对吧?别担心,咱们一步步来搞定它。

先确认结构体定义

以C#为例(其他语言逻辑完全相通),先确保你的Book结构体字段和需求匹配:

public struct Book
{
    public string Title;
    public string Author;
    public decimal Price;
}

完整实现代码(带注释)

下面是核心的读取、解析和输出逻辑,每一步都做了细节处理:

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string filePath = "你的书籍文件路径.txt"; // 记得替换成实际文件路径

        // 逐行读取文件,这种方式更节省内存
        foreach (string line in File.ReadLines(filePath))
        {
            // 跳过空行,避免无效处理
            if (string.IsNullOrWhiteSpace(line))
                continue;

            // 用'|'作为分隔符拆分每行内容
            string[] bookParts = line.Split('|');

            // 检查拆分后的元素数量是否符合要求(必须是标题、作者、价格三个部分)
            if (bookParts.Length != 3)
            {
                Console.WriteLine($"⚠️ 无效行:{line},格式应为「Title|Author|Price」");
                continue;
            }

            // 处理价格字段,转换为数值类型(用decimal更适合货币场景)
            if (!decimal.TryParse(bookParts[2].Trim(), out decimal bookPrice))
            {
                Console.WriteLine($"⚠️ 行「{line}」中的价格格式错误,请检查");
                continue;
            }

            // 把拆分后的内容赋值给Book结构体实例
            Book currentBook = new Book
            {
                Title = bookParts[0].Trim(), // Trim去掉字段前后可能的空格,让数据更干净
                Author = bookParts[1].Trim(),
                Price = bookPrice
            };

            // 输出到控制台,格式可按需调整
            Console.WriteLine("📚 书籍详情:");
            Console.WriteLine($"标题:{currentBook.Title}");
            Console.WriteLine($"作者:{currentBook.Author}");
            Console.WriteLine($"价格:{currentBook.Price:C}\n"); // :C是货币格式输出
        }
    }
}

关键逻辑说明

  • 字符串分割:这是你之前缺失的核心步骤——用Split('|')把整行拆分成三个独立字段,就能分别对应结构体的属性了,再也不会输出整行内容
  • 数据校验:加入了空行跳过、拆分元素数量检查、价格格式校验,避免因为文件格式错误导致程序崩溃
  • 细节处理:用Trim()清理字段前后的空格,价格用decimal类型保证精度,这些小细节能让程序更健壮

如果用的是其他语言(比如C++、Python),核心逻辑也是一致的:逐行读取→按分隔符拆分→校验数据→赋值结构体/类→输出。比如Python可以用line.split('|')拆分,用dataclass定义书籍结构。

内容的提问来源于stack exchange,提问作者A.Petrov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:19:53