文件写入的有关问题

文件写入的问题
我编写了一个ATM机的模拟程序,运行程序,先从存有账户记录的文件中读取所有的账户信息,并用一个容器存储记录。当用户修改密码或提款时,修改相应的账户信息,并用新的信息覆盖掉该账户原有的信息。下面的函数实现此功能:首先,读取旧文件的账户信息,根据账户的账号依次查找对应的账户信息。一旦找到,就把新的账户信息写入对应的行。

账户信息的文件格式是:
134671   zhangsan   12356.42   134671$
158231   lisi   12356.42   158231$
181791   wangwu   12356.42   181791$

一行存储一个账户信息:账号   姓名   余额   密码$
用空格作为账户信息内部的分隔符,用$作为一条信息的终至符。


void   Atm::UpdateAccountFile()
{
        size_t   count   =   0;
        double   balance;
        string   accountList;
        string   strTemp;
        Account   AccountTemp;  

        size_t   positionPre   =   0;
        size_t   positionPost   =   0;
        size_t   accountListCount   =   0;

        fstream   inOut;
        inOut.open(m_accountFile.c_str(),   fstream::in   |   fstream::out);
        while   (getline(inOut,   accountList))//读取一行记录
        {
accountListCount   =   accountList.size();
positionPost   =   accountList.find_first_of( "$ ",   positionPre);//确定$所在位置
strTemp   =   accountList.substr(positionPre,   positionPost);//剥离出账户信息字符串
accountList   =   strTemp;

positionPost   =   accountList.find_first_of( "   ",   positionPre);//获得第一个空格所在位置
strTemp   =   accountList.substr(positionPre,   (positionPost   -   positionPre));//获得账户的账号


if   (m_accountVec[m_index].GetNumber()   ==   strTemp)//如果此账号是需要重新写入的账号
{
        inOut.seekg(0   -   accountListCount   -   2,   ios::cur);//重定位文件指针为行首

        inOut   < <   m_accountVec[m_index].GetNumber()   < < '   '  
                              < <m_accountVec[m_index].GetName()   < <   '   '
                              < <   GetStrFromNum(balance)   < <   '   '
                              < <   m_accountVec[m_index].GetPassword()   < <   '$ ';//写入新的账户信息

                          count   =   (m_accountVec[m_index].GetNumber()).size()   +  
                                  (m_accountVec[m_index].GetName()).size()   +  
                                  (m_accountVec[m_index].GetPassword()).size()   +        
                                  (GetStrFromNum(balance)).size()   +   3   +   1;//新的账户信息的字符串长度

      if   (count   <   accountListCount)//如果修改后的账户信息字符串长度小于修改前长度,则进行如下操作:用 '\0 '填充,并以 '\n '结束。