添加角色模块
#include "AnimatedCharacterProcess.h"
#include"menu.h"
#include<iostream>
#include"UseSelect.h"
using namespace std;
const int BatchAddLimits = 10;
static bool isInputStreamError() {
if (!cin) {
cin.clear();
//刷新缓冲区
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
return true;
}
return false;
}
static void ProcessSomeData(UltramanMainCharacter& C) {
int pos = 0;
if ((pos = C.realIdentity.find("无")) != string::npos) {
C.realIdentity.insert(0, "(");
C.realIdentity.append( ")");
}
if ((pos = C.dub.find("无")) != string::npos) {
C.dub.insert(0, "(");
C.dub.append(")");
}
}
//添加并且更新的角色池
static void AddedAndUpdatedRolePool(vector<UltramanMainCharacter>& RolePool) {
UltramanMainCharacter Character;
while (true) {
cout << "请输入角色名称:";
cin >> Character.name;
if (isInputStreamError()) {
continue;
}
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;
}
}
ProcessSomeData(Character);
RolePool.push_back(forward<UltramanMainCharacter>(Character));
break;
}
}
void AddUltramanMainCharacter(vector<UltramanMainCharacter>& RolePool) {
int Select;
bool Exit = false;
while (!Exit) {
cout << "1-单个添加" << endl;
cout << "2-批量添加(不能超过" << BatchAddLimits << ")" << endl;
cout << "请输入添加的类型:";
cin >> Select;
if (Select == 1) {
UltramanMainCharacter Character;
AddedAndUpdatedRolePool(RolePool);
break;
}else if (Select == 2) {
int num;
do{
do {
cout << "请输入批量添加数量:";
cin >> num;
} while (isInputValid());
if (num > 0 || num <= BatchAddLimits) {
cout << endl;
for (size_t i = 0; i < num; i++) {
cout << "第" << i + 1 << "次添加" << endl;
AddedAndUpdatedRolePool(RolePool);
}
break;
}
else {
cout << "你输入批量添加数量:";
}
} while (true);
Exit = true;
} else{
//判断用户输入是否合法
if (!isInputValid()) {
cout << "没有以这个选项为:" << Select << endl << endl;
}
}
}
}
调用AddUltramanMainCharacter 这里有个问题 就是
UltramanSelectMenu 所有的变量是局部的
当然AddUltramanMainCharacter 函数体里也有局部
局部就是相当于临时 不稳定的,
不稳定的存储数据 你觉得会存储得了吗 存储不了 你没有这个能力 知道吗
怎么感觉这句话相当的熟悉?
范大将军?
当然你也可以自己管理 内存 和释放 优秀的程序员往往都会自己管理内存,当然有的时候,并不是
自己管理的内存也有可能 忘记释放导致内存泄漏,这个噩梦 能别碰尽量 别碰
指针存储的仓库 指针是啥玩意 指针相当于你的卫星定位 是不是不可思议呀 当然这是抽象的来说
具体的 还得家家户户有的门牌号
引用:C++的神来之笔: 引用相当于变量的别的代号 比如说刺客伍六七的 柒相当于伍六七
//迪迦选择菜单
bool UltramanSelectMenu(int Select) {
bool IsExit = false;
//相当于装水的杯子 只不过水是数据
vector<UltramanMainCharacter> RolePool;
switch (Select) {
case 1://1.添加新角色
AddUltramanMainCharacter(RolePool);
break;
case 2://2.浏览角色
break;
case 3://3.浏览角色的关系
break;
case 4://3.浏览角色的关系
break;
case 0:
IsExit = true;
break;
default:
//std::cout << "输入有误!没有 " << Select << " 选项...." << std::endl;
break;
}
return IsExit;
}
那怎么办既然放到这里不行
我放到 Ultraman 函数中 总可以了吧,提高生存周期模型 当然要想提高生存周期,必须自己分配 自己释放 !
void Ultraman(std::string Welcome){
std::cout << Welcome << std::endl;
//动画片名
std::string Cartoontitle;
//截取动画片名
Cartoontitle = InterceptSubString(Welcome);
//休眠:1.5s
sleep_for(1500ms);
int Select;
bool IsExit = false;
//迪迦选择菜单
vector<UltramanMainCharacter> RolePool;
while (!IsExit) {
system("cls");
std::cout << "\t\t 动画片名:" << Cartoontitle << std::endl;
UltramanMainMenu();
Select = inputUseSelect();
//参数菜单的数量
if (isInputValid() || isInputIncorrect(Select, 4)) {
continue;
}
//更新一下参数
IsExit = UltramanSelectMenu(RolePool,Select);
}
return;
}
动画片名:迪迦奥特曼
*************************************************
[*************** 1.添加新角色 ******************]
[*************** 2.浏览角色 ********************]
[*************** 3.浏览角色的关系 **************]
[*************** 4.浏览角色的所有属性 **********]
[*************** 0.返回主系统 ******************]
*************************************************
请输入你的选择:1
1-单个添加
2-批量添加(不能超过10)
请输入添加的类型:1
请输入角色名称:圆大古
请输入角色年龄(0-96):36
请输入角色职业: GUTS队员
请输入角色是否隐藏身份(奥特曼 /无):迪迦奥特曼
请输入角色扮演者:长野博
请输入角色配音演员(若有:写这样的格式 日语:xxx ,国语:xxx 若没有就写:无):日语:长野博,国语:金锋
叮! 数据已经同步到文件中....
叮! 数据已经同步完成!
文件?