//判断容器RolePool中是否存在与名称name相同的UltramanMainCharacter结构体
static bool isSameData(vector<UltramanMainCharacter>& RolePool, const string& name) {
//RolePool容器迭代器结束位置
auto RolePool_IterEnd = RolePool.end();
//定义Same_data函数对象,用于判断UltramanMainCharacter结构体的name字段
//是否与name参数相同
auto Same_data = [&](UltramanMainCharacter& Character) {
//返回Character.name与name是否相同的结果
return Character.name == name;
};
//使用find_if算法函数在RolePool容器中查找第一个使得Same_data函数对象返回true的元素
//如果找到,Iter_Result指向该元素,否则指向RolePool_IterEnd
auto Iter_Result = find_if(RolePool.begin(), RolePool_IterEnd, Same_data);
//如果找到,Result为true,否则为false
bool Result = Iter_Result != RolePool_IterEnd;
//如果找到,输出提示信息和找到的元素名称、输入的名称
if (Result) {
cout << "输入角色名称和存储在文件中的数据或者容器的数据一样" << endl;
cout << "文件/容器:" << Iter_Result->name << "输入角色名称" << name << endl;
}
//返回搜索结果
return Result;
}
//添加并更新UltramanMainCharacter结构体vector容器RolePool
static void AddedAndUpdatedRolePool(vector<UltramanMainCharacter>& RolePool) {
//定义一个UltramanMainCharacter结构体变量Character,用于存储用户输入的数据
UltramanMainCharacter Character;
//循环获取用户输入,直到用户选择退出
while (true) {
//输入角色名称,如果输入错误或名称已存在,继续循环
cout << "请输入角色名称:";
cin >> Character.name;
if (isInputStreamError()|| isSameData(RolePool, Character.name)) {
continue;
}
//输入角色年龄,如果年龄不在范围内(0-96)或输入错误,继续循环
//否则,跳出循环
while (true) {
cout << "请输入角色年龄(0-96):";
cin >> Character.age;
int age = Character.age;
if ((age >= 0 || age < 96) && !isInputStreamError()) {
break;
}
}
//同上,输入角色职业
while (true) {
cout << "请输入角色职业:";
cin >> Character.occupation;
if (!isInputStreamError() && !Character.occupation.empty()) {
break;
}
}
//同上,输入角色是否隐藏身份
while (true) {
cout << "请输入角色是否隐藏身份(奥特曼 /无):";
cin >> Character.realIdentity;
if (!isInputStreamError() && !Character.realIdentity.empty()) {
break;
}
}
//同上,输入角色扮演者
while (true) {
cout << "请输入角色扮演者:";
cin >> Character.role_player;
if (!isInputStreamError() && !Character.role_player.empty()) {
break;
}
}
//同上,输入角色配音演员
while (true) {
cout << "请输入角色配音演员(若有:写这样的格式 日语:xxx ,国语:xxx 若没有就写:无):";
cin >> Character.dub;
if (!isInputStreamError() && !Character.dub.empty()) {
break;
}
}
//处理Character中某些数据
ProcessSomeData(Character);
//将Character数据emplace_back加入RolePool容器
RolePool.push_back(forward<UltramanMainCharacter>(Character));
break;
}
}
去除重复假冒伪劣的大古