文件啊文件.本人菜菜,各位

文件啊文件......本人菜菜,高分求教各位
现有test.txt文件
内容如下:

北京某某律师事务所
地   址:北京市某某街8号7-6
邮     编:123456
数量:2名
姓名:杨艳涛     寇孟良    

上海某某律师事务所
地址:上海市某某路22号
数量:3名
姓名:陈小玲     赵绍舜     欧邦禄    

重庆某某律师事务所
地址:重庆某某商城B26楼
数量:7名
姓名:秦泽均     肖佑嘉    
      补永赋    
    郑书宏     徐齐民    
赵松     黎海        

 
=============================================================
想得到如下格式的文件

北京某某律师事务所,北京市某某街8号7-6,123456,2名,杨艳涛
北京某某律师事务所,北京市某某街8号7-6,123456,2名,寇孟良
上海某某律师事务所,上海市某某路22号,,3名,陈小玲
上海某某律师事务所,上海市某某路22号,,3名,赵绍舜
上海某某律师事务所,上海市某某路22号,,3名,欧邦禄
重庆某某律师事务所,重庆某某商城B26楼,,7名,秦泽均
重庆某某律师事务所,重庆某某商城B26楼,,7名,肖佑嘉
重庆某某律师事务所,重庆某某商城B26楼,,7名,补永赋  
重庆某某律师事务所,重庆某某商城B26楼,,7名,郑书宏
重庆某某律师事务所,重庆某某商城B26楼,,7名,徐齐民
重庆某某律师事务所,重庆某某商城B26楼,,7名,赵松
重庆某某律师事务所,重庆某某商城B26楼,,7名,黎海


我在看过jixingzhong(瞌睡虫·星辰)   在kid_wei发表的文章中使用的方法
经过修改,我只能得到如下的文件:

北京某某律师事务所,北京市某某街8号7-6,123456,2名,杨艳涛     寇孟良
上海某某律师事务所,上海市某某路22号,,3名,陈小玲     赵绍舜     欧邦禄
重庆某某律师事务所,重庆某某商城B26楼,,7名,,6名,秦泽均     肖佑嘉    
      补永赋    
    郑书宏     徐齐民    
赵松     黎海        


我的想法是把除名字之前的内容保存为一个tmp,然后直接打印tmp然后依次输出名字就可以了
但无法完成算法.....

------解决方案--------------------
倒,你的原始文件格式是否是固定的?
人名多了是否要换行?
允许不允许某个人叫“地址:”这种名字?

------解决方案--------------------
原始文件的格式是
单位名称
地址:XXX
邮编:XXXXXX(邮编可以有,可以无,不过已经解决了,没有邮编的我默认输出为空格)
数量:XX
姓名:XXX XXX XXX
XXX XXX
XXX
主要是姓名一行,有的是回车换行的,所以比较麻烦了- -~

允许那种名字的出现,这样简单点,而且没有谁真叫这种名字- -~(偷懒中)
------解决方案--------------------
找到“姓名:”这个字符串。。然后逐个记录每个姓名,滤掉空格应该就可以啦把
------解决方案--------------------
#include <fstream>
#include <string>
#include <iostream>
using namespace std;

int main()
{
ifstream ifile( "test.txt "); // input
ofstream ofile( "output.txt "); // output
string company, address, zcode, name, tmp;
int count, i;

while (!ifile.eof())
{
getline(ifile, company); //company

getline(ifile, address); //address
address = address.substr(address.find( ": ")+2); //sub-string

getline(ifile, tmp);
if (tmp.find( "邮 ") != string::npos) // zcode
{
zcode = tmp.substr( tmp.find( ": ")+2 );
getline(ifile, tmp);
}
else // count
{
zcode = " ";
}
count = tmp[tmp.find( ": ")+2]- '0 '; //get count

ifile> > name; // name
name = name.substr( name.find( ": ")+2 );

ofile < <company < < ", " < <address < < ", " < <zcode < < ", "
< <count < < "名, " < <name < <endl;

for(i=1; i <count; i++) // the following names
{
ifile> > name;
ofile < <company < < ", " < <address < < ", " < <zcode < < ", "
< <count < < "名, " < <name < <endl;