总算是文件有了数据啦 噢耶!
圆大古 36 GUTS队员 人形状态奥特曼 长野博 日语:长野博,国语:金锋
问题是如何将文件的数据 加载到程序里呢 这个时候 ,我们找个带货主播来给大家介绍 欢迎 品牌方闪亮登场 你懂把文件的数据 加载到程序里不 懂! 当然懂了 这个时候的品牌方是 微软Virtual StudIo 感谢 IOS C++ 标准委员会 允许我在这里 瞎逼逼
思想是他,提供 当然它( IOS C++ 标准委员会)首先提供了实现的案例 我微软Virtual StudIo 团队就实现这些 在下呢准备了一些干货,点左下方咨询 !
点了 原来是他呀(ifstream)
一番时候后,终于写出来了…
/*vector<UltramanMainCharacter>& RolePool:UltramanMainCharacter结构体的vector容器,用于存储从文件中读取的数据。bool &isEmptyFIle:bool类型参数,指示文件是否为空,true为空,false为非空。*/
void SyncFileDataToProgram(vector<UltramanMainCharacter>& RolePool ,bool &isEmptyFIle){
//创建文件流对象,以输入模式打开迪迦奥特曼.txt文件
ifstream stream("迪迦奥特曼.txt", ios::in);
//判断文件是否成功打开
if (stream.is_open()) {
//定义一个UltramanMainCharacter结构体变量value,用于从文件中读取数据
UltramanMainCharacter value;
//读取文件第一个字符,判断文件内容是否为空
char ch = stream.peek();
//如果读取的第一个字符是文件结束符EOF,则文件为空,
//isEmptyFIle为true,否则,文件不为空,isEmptyFIle为false
isEmptyFIle = ch == EOF;
//如果文件不为空
if (!isEmptyFIle){
//将第一个读取的字符放回文件流中
stream.putback(ch);
//同步文件流
stream.sync();
//获取当前文件流位置,设置为0,实现重置文件流读取位置
auto pos = stream.tellg();
pos = 0;
stream.seekg(pos);
//循环读取文件流,提取value结构体中各个字段的值
for (; (stream >> value.name >> ws >> value.age >> ws >> value.occupation >> ws >> value.realIdentity >> ws >> value.role_player >> ws >> value.dub);) {
//将读取的UltramanMainCharacter结构体数据value,
//emplace_back加入RolePool容器中,RolePool为UltramanMainCharacter结构体的vector容器
RolePool.emplace_back(forward<decltype(value)>(value));
}
}
//关闭文件流
stream.close();
}
}