文件啊文件.本人菜菜,各位
文件啊文件......本人菜菜,高分求教各位
现有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;
现有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;