C++ 如何能搜索TXT文件里某行中的字匹配
唔,感觉有点不大熟,我用的是fstream函数,我C++新手,在做C++课程设计通讯簿管理,添加联系人的信息一行一行到TXT文件模块弄好了,但是查询联系人用姓名或学号,我...
唔,感觉有点不大熟,我用的是fstream函数,我C++新手,在做C++课程设计通讯簿管理,添加联系人的信息一行一行到TXT文件模块弄好了,但是查询联系人用姓名或学号,我想做到搜到某行的名字或学号匹配,便输出该行所有信息,我为此烦恼半天了~希望能帮忙,谢谢!能贴出个例子吗?
展开
5个回答
展开全部
#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 为文件名
}
#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 为文件名
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
懒得写了,说个思路吧:
1.先把文件打开,把里面的每行数据读出来,放到一个数组中,然后关闭文件.
2.用一个循环比较数组中每行数据是否以"61"开头,是则输出,否则继续下次循环,直到所有数据循环完即可.
1.先把文件打开,把里面的每行数据读出来,放到一个数组中,然后关闭文件.
2.用一个循环比较数组中每行数据是否以"61"开头,是则输出,否则继续下次循环,直到所有数据循环完即可.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果数据量不大,就一次性把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){
输出该记录
}
}
如果数据量很大,就一边读磁盘一边匹配。
大概的框架是这个样子的。
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){
输出该记录
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我想你主要的问题是在格式的输入上面,用sscanf函数可以解决你的问题。这是个C函数但是C++一样用,好用就行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询