小森动画回忆录(二)-数据同步模块(文件数据)-哆啦A梦篇

文章讲述了如何从名为Doraemon.txt的文本文件中读取哆啦A梦角色的数据,包括角色名称、年龄、特性、配音演员等信息,并将这些数据存储到C++的DoraemonCharacter结构体向量容器中。通过SyncFileDataToProgram函数实现文件读取和解析。

哆啦A梦.txt

哆啦A梦 -89 使用四次元口袋,帮大雄解决问题(育儿机器人)爱吃铜锣烧 小叮当,小哆啦 日配:(富田耕生,野泽雅子,大山羡代,水田山葵),国语(陈美贞,林保全.郭立文,董浩,刘纯燕,李晔,梁颖,黄昕瑜)
野比大雄 10 擅长翻花绳,射击,乐于助人 大雄 日配:(太田淑子,小原乃梨子,大原惠),国语(杨凯凯.刘如苹,刘凯宁,陆惠玲,姚培华)
源静香 10 弹小提琴,烤地瓜,下厨 静香 日配:(惠比寿真沙子野村道子,佐久间玲),国语(许淑嫔,梁少霞)
刚田武 10 最爱唱歌 胖虎 日配:(肝付兼太,立壁和也,木村昴),国语(冯志润,郭志权,陈卓智,黄启昌,于正昇,于正昌,宋克军,梁兴昌)
骨川小夫 10 自大,骄傲,爱炫耀,很有艺术才能 小夫 日配:(肝付兼太,关智、八代骏 ),国语(刘杰,李正翔)

定义从Doraemon数据文件中读取的数据

//存储从Doraemon数据文件中读取的数据
struct DoraemonFileData {
    //DoraemonCharacter结构体的vector容器,存储从文件中读取的角色数据 
    vector<DoraemonCharacter> RolePool;
    //选择变量 
    int Select;
    //判断文件是否为空,true为空,false为非空
    bool isEmptyFile;
};

从哆啦A梦.txt文件中加载数据到DoraemonCharacter结构体的vector容器中

//从哆啦A梦.txt文件中加载数据到DoraemonCharacter结构体的vector容器中
//RolePool:待填充的DoraemonCharacter对象容器
//isEmptyFIle:输出参数,表示文件是否为空
void SyncFileDataToProgram(vector<DoraemonCharacter>& RolePool, bool& isEmptyFIle) {
  //创建文件输入流对象,打开指定的文本文件
  ifstream stream("哆啦A梦.txt", ios::in);
  //判断文件打开是否成功
  if (stream.is_open()) {
    //用于暂存每行读取的数据
    DoraemonCharacter value;
    //检测文件是否到末尾
    char ch = stream.peek();
    //如果已到结尾,设置标记表示空文件
    isEmptyFIle = (ch == EOF);
    //文件不为空,进行读取解析
    if (!isEmptyFIle) {
      //放回之前读取的字符
      stream.putback(ch); 
      //将文件游标置为开头
      auto pos = stream.tellg();
      pos = 0;
      stream.seekg(pos);
      //同步流状态
      stream.sync();
      //循环读取每行数据,解析到DoraemonCharacter对象
      for(; stream >> value.name >> ws
                >> value.age >> ws
                >> value.Peculi >> ws
                >> value.SimpleCall >> ws
                >> value.dub; ) {
        //对象读取成功,加入容器 
        RolePool.emplace_back(forward<decltype(value)>(value));
      }
    }
    //关闭文件流
    stream.close();
  }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小森程序员

若能帮助到你,小费自愿付费

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值