判断循环不会写,求助。

#include<iostream>
#include<fstream>
#include<windows.h>

using namespace std;
#define file_name"结构.txt"
struct information
{
    string name;
    string uid;
    char gender;
};
struct information Information;//两个information有啥区别和作用

bool InitInfo();
bool ReadInfo();
void RecordInfo();
bool WriteInfo(information *Info,int i);//这样一段的作用

int main()
{
    int i;
    InitInfo();
    while(1)
    {
        cout<<"请选择要进行的操作:\n";
        cout<<"1.打印数据到屏幕\n";
        cout<<"2.录入数据\n";
        cout<<"3.退出程序\n";
        cin>>i;
        switch(i)
        {
            case 1:
                    if(ReadInfo())
                    {
                        cout<<"成功读取文件\n";
                    }
                    else
                    {
                        cout<<"读取文件失败\n";
                    }
                    break;
            case 2:
                    RecordInfo();
                    break;
            case 3:
                    cout<<"输入值非法,请重新输入数字:\n";                
        }
    }
    cout<<"初始化失败\n";
    return 0;
}

bool InitInfo()
{
    Information.name="jincheng";
    Information.uid="1998821";
    Information.gender='m';
    WriteInfo(&Information,0);
}

bool ReadInfo()
{
  ifstream in;
  in.open(file_name,ios::in);
  string x;
  while(getline(in,x))
  {
      cout<<x;
      cout<<'\n';
  }
  in.close();
}

void RecordInfo()
{
    cout<<"请输入姓名:\n";
    cin>>Information.name;
    cout<<"请输入ID:\n";
    cin>>Information.uid;
    cout<<"请输入性别:\n";
    cin>>Information.gender;
    WriteInfo(&Information,1);
}

bool WriteInfo(information *Info,int i)
{
    ofstream out;
    if(i==1)
    {
        out.open(file_name,ios::app);
    }
    else
    {
        out.open(file_name,ios::out);
    }

    out<<(*Info).name<<" ";
    out<<(*Info).uid<<" ";
    out<<(*Info).gender<<" \n";
    out.close();

}

这是我仿写的一个数组存储函数,但是不够健壮,我想加一个判断性别是否为mMfF,若不是则提示输入非法重新输入直到正确才录入,但是判断是否为mMfF的函数我会写,判断完之后提示重新输入和存储的代码我写出来没报错也无法运行,请教一下该怎么写。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^