c++中怎么对TXT文件进行关键字查找啊
c++中如何对TXT文件进行关键字查找啊~
就是我有一个TXT文件 里面的数据都是有规律的放的(譬如 航空公司的航班信息) ,每一行放一组数据
然后我现在要按照1-2个关键字查找到某一个或几个确定的行然后对这一行的数据进行删除或修改操作
应该怎么弄啊~~~
。。。周4老师就要验收程序了~ 啊啊啊啊啊
------解决方案--------------------
1
将文件内容读入内存中,再在内存中查找
2
将文件内容读入数据库,再在数据库中查找
------解决方案--------------------
没学数据库 就只能按照指定的航班信息的结构读到内存当中
每读一个判断 有没有你的关键字 要不要做处理
处理完再写回文件
当你的TXT文件很大的情况下 你可以边读边写 比一定要整个文件一次性全部读完
------解决方案--------------------
------解决方案--------------------
楼主,类似你这个问题貌似在 C++ PRIMER中文第四版里面有的
那个要我们编写的TextQuery的类就是你的这个作用,只是稍微要做下小修改。
呵呵,比较容易的,至少我写过的,书上现成的也有的。
------解决方案--------------------
------解决方案--------------------
楼上很多怎么都是c语言的用法,用getline嘛,c++里的多简单
用法如下:
string inFileName = "xx.txt"; //这里是你的txt名
ifstream infile;
infile.open(inFileName.c_str());
if(!infile)
{
cerr<<"error:unable to open input file:"
<<infile<<endl;
exit(-1);
}
//上面的照抄就行了
就是我有一个TXT文件 里面的数据都是有规律的放的(譬如 航空公司的航班信息) ,每一行放一组数据
然后我现在要按照1-2个关键字查找到某一个或几个确定的行然后对这一行的数据进行删除或修改操作
应该怎么弄啊~~~
------解决方案--------------------
1
将文件内容读入内存中,再在内存中查找
2
将文件内容读入数据库,再在数据库中查找
------解决方案--------------------
没学数据库 就只能按照指定的航班信息的结构读到内存当中
每读一个判断 有没有你的关键字 要不要做处理
处理完再写回文件
当你的TXT文件很大的情况下 你可以边读边写 比一定要整个文件一次性全部读完
//打开txt文件 航班信息1.txt
//打开用于保存处理结果的文件 航班信息2.txt
while(/*读取到一个完整的航班信息*/)
{
//判断关键字 得出是不是你要处理的记录
//不是你要修改的记录 直接写入航班信息2.txt
//是要修改的记录 修改完写入航班信息2.txt
//是要删除的记录 什么都不做
}
//关闭航班信息1.txt
//关闭航班信息2.txt
------解决方案--------------------
//连接数据库
create database 航班信息库
create table 航班信息( ......)
//打开txt文件 航班信息1.txt
while(/*读取到一个完整的航班信息*/)
{
//insert into 航班信息 values (航班信息的第1个字段,航班信息的第2个字段,....)
}
//关闭航班信息1.txt
update 航班信息 set 航班信息的某个字段=你要的值 where 航班信息的某个字段 =(或者like等等) 你的关键字
delete from 航班信息 where 航班信息的某个字段 =(或者like等等) 你的关键字
//打开用于保存处理结果的文件 航班信息2.txt
select * from 航班信息
//逐条写入闭班信息2.txt
//关航闭班信息2.txt
------解决方案--------------------
楼主,类似你这个问题貌似在 C++ PRIMER中文第四版里面有的
那个要我们编写的TextQuery的类就是你的这个作用,只是稍微要做下小修改。
呵呵,比较容易的,至少我写过的,书上现成的也有的。
------解决方案--------------------
name:xxx sex:ooo
sscanf("%[*^:]:%[^ ] %[*^:]:%[^ ] ",strName,strSex);
------解决方案--------------------
楼上很多怎么都是c语言的用法,用getline嘛,c++里的多简单
用法如下:
string inFileName = "xx.txt"; //这里是你的txt名
ifstream infile;
infile.open(inFileName.c_str());
if(!infile)
{
cerr<<"error:unable to open input file:"
<<infile<<endl;
exit(-1);
}
//上面的照抄就行了
string text;
while (infile.good())
{
getline(infile,text,','); //以逗号为分隔符
getline(infile,text,'\n');//以回车为分隔符
getline(infile,text); //不写默认为回车分隔符
//上面的意思就是读文件,遇到分隔符就停止
//比如以逗号为分隔符则123,333,444 就将123传给string类型的text
}
//当然上面的不完整,不过大致意思表达了