C++ 如何能搜索TXT文件里某行中的字匹配

唔,感觉有点不大熟,我用的是fstream函数,我C++新手,在做C++课程设计通讯簿管理,添加联系人的信息一行一行到TXT文件模块弄好了,但是查询联系人用姓名或学号,我... 唔,感觉有点不大熟,我用的是fstream函数,我C++新手,在做C++课程设计通讯簿管理,添加联系人的信息一行一行到TXT文件模块弄好了,但是查询联系人用姓名或学号,我想做到搜到某行的名字或学号匹配,便输出该行所有信息,我为此烦恼半天了~希望能帮忙,谢谢!能贴出个例子吗? 展开
 我来答
百度网友a2c7f1d
2011-01-13 · TA获得超过276个赞
知道小有建树答主
回答量:291
采纳率:0%
帮助的人:250万
展开全部
使用FILE指针
1、先用fopen打开文件
2、再seek到文件结尾,seek会返回文件的长度,动态分配(长度+1)个字符大小的内存,用fread一次读入整个文件的内容到刚刚分配的内存。
3、字符串一般换行都是用的'\n',可以遍历数组,将每行数据提取出来。
4、在每行字符串中搜索你想要找的字符或者字符串,也就是你说的匹配。

如果可以使用mfc话会更方便,CStdioFile类能满足你的要求,ReadString直接读入一行数据。
蓝色污点
2011-01-14
知道答主
回答量:37
采纳率:0%
帮助的人:24.6万
展开全部
#include<fstream>
#include<iostream>
using namespace std;
void SearchID(char *ID,char * Filename)
{
char ch[200];
bool judge=false;
ifstream in(Filename);
while(in.getline(ch,200))
{
if(strstr(ch,ID)!=NULL)
{
judge=true;
printf("%s\n",ch);
}
}
if(!judge)
printf("Can Not Search This ID :%s\n",ID);
in.close();
}
int main()
{
char Temp[40];
scanf("%s",Temp);
SearchID(Temp,"IdRecord.txt"); //学生信息存放处,IdRecord.txt 为文件名

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nphccx
2011-01-14 · TA获得超过3938个赞
知道小有建树答主
回答量:1145
采纳率:0%
帮助的人:981万
展开全部
懒得写了,说个思路吧:
1.先把文件打开,把里面的每行数据读出来,放到一个数组中,然后关闭文件.
2.用一个循环比较数组中每行数据是否以"61"开头,是则输出,否则继续下次循环,直到所有数据循环完即可.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友3489420
2011-01-13
知道答主
回答量:29
采纳率:0%
帮助的人:0
展开全部
如果数据量不大,就一次性把txt文件中的内容全部读到内存里,也就是开一个struct的数组存储所有记录的信息,然后遍历整个数组,如果发现匹配,就输出整条记录。
如果数据量很大,就一边读磁盘一边匹配。

大概的框架是这个样子的。

struct student
{
string name;
string id;
……
};

struct list[1000000];

ifstream in( file.c_str() );
string tmp;

//小数据量
i = 1;
while(in>>tmp){
struct one = {……};
list[i] == one;
++i;
}

//大数据量
while(in>>tmp){
if(tmp == object){
输出该记录
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ccczzzhhh343
2011-01-14
知道答主
回答量:7
采纳率:0%
帮助的人:4万
展开全部
我想你主要的问题是在格式的输入上面,用sscanf函数可以解决你的问题。这是个C函数但是C++一样用,好用就行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式