问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c++ 文本文件中查找字符串

发布网友 发布时间:2022-08-07 10:04

我来回答

5个回答

热心网友 时间:2024-11-24 04:51

我觉得是查找一篇文章中某个单词数出现的次数,但是你题目的要求是查找字符串出现的次数,所以我还是按你的题意来写的

还有,我并不赞同楼上那些用C风格字符串的处理方式,C不像C,C++不像C++。
C++的字符串处理远比C要简单便捷

#include<iostream>
#include<fstream>
#include<string>
using namespace std;
int main()
{
fstream fin("file.txt", ios::in);
if(!fin)
{
cerr << "cannot open file " << endl;
return -1;
}
string s;
cout << "请输入要查找的字符串:";
cin >> s;
string t;
int num = 0;
string::size_type i;
while(!fin.eof())
{
fin >> t;
if(t.size() > s.size())
{
for(i = 0; i != s.size(); i++)
{
if(t[i] != s[i])
break;
}
if(i == s.size())
num++;
}
else if (t == s)
num++;
}
fin.close();
cout << "该字符串共出现了" << num << "次" << endl;
return 0;
}

热心网友 时间:2024-11-24 04:52

100分,加给我
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char token; // 当前从文件获取的字符
int count;

void parse(char token, FILE *fp, char wordname[]);
void cmpword(char str[], char name[]);

int main()
{
// 输入文件名,可以包含路径,如果与程序在相同上当,可只写文件名不写目录
char fname[50]; //文件名
char wordname[100]; //要查找的字符串
FILE *fp;
count = 0;
printf("please input file name: ");
scanf("%s", fname);
printf("please input word name: ");
scanf("%s", wordname);
fp = fopen(fname, "r");
if (fp == NULL)
{
printf("IO ERROR\n"); // 文件打开出错
printf("press any key to exit");
return 0;
}
else
{
while ((token = fgetc(fp)) != EOF)
{
switch (token)
{
// 空白符和换行的处理
case ' ':
case '\t':
case '\n':
break;
// 关键词的处理
default:
parse(token, fp, wordname);
break;
}
}
}
printf("%s appear %d times!\n", wordname, count);
return 0;
}

// 关键词分析程序
void parse(char token, FILE *fp, char wordname[])
{
char keyword[1024];
int index = 0;
// 将每个词第一个字符赋给数组第一个元素
keyword[0] = token;
// 开始读字符,直到遇到空白符,说明找到一个词
while ((keyword[++index] = fgetc(fp)) != ' ' &&
keyword[index] != '\t' && keyword[index] != EOF &&
keyword[index] != '\n')
;
// 加结束符
keyword[index] = '\0';
//比较是否为要查找的关键词
cmpword(keyword, wordname);
}

//查找计数
void cmpword(char str[], char name[])
{
if (strcmp(str, name) == 0)
count++;
}

热心网友 时间:2024-11-24 04:52

==========================================
问题补充:谢谢啊看来我没说清楚……最好用上<fstream>库和类
要不我也会C的……但到c++就晕了……
==========================================
给,下面是用上<fstream>库的程序,已经编译运行确认,你再看看吧:
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <string.h>
using namespace std;

#define MAXLINELENGTH 1024
#define N 20 //暂定需要查找的字符串的最大长度为20

int sumstrstr(char *, char *);

int main()
{
char str[N]={NULL};
char txtarray[MAXLINELENGTH];
int i = 0;
char c;
int sumcount = 0;
fstream fp;

fp.open("data.txt",ios::in); //暂定文件名为"data.txt"

memset(txtarray, 0, sizeof(txtarray));

if (!fp)
{
cout<<"Open File Error..."<<endl;
exit(1);
}

cout<<"请输入要查找的字符串: "<<endl;
cin>>str;

while (fp>>c)
{
if(c== EOF) break;

if (c != '\n')
{
txtarray[i] = c;
i++;
}
else//Read a line of the file

{
sumcount += sumstrstr(txtarray, str);
i = 0;
memset(txtarray, 0, sizeof(txtarray));
}
}

sumcount += sumstrstr(txtarray, str);//The last line of the file

cout<<endl<<"该字符串在文章中出现次数为: "<<sumcount<<"次."<<endl;

fp.close();;

system("pause");
return 0;
}

int sumstrstr(char *str1, char *str2)
{
int sum = 0;
char *str3 = NULL;
int i = 0;
while ((str3 = strstr(str1, str2)) != NULL)
{
str1 = str3;
sum++;
for (i = 0; i < strlen(str2); i++)
str1++;
}

return sum;
}

热心网友 时间:2024-11-24 04:53

这里有各种算法综述的文章,你看看。
http://www.yuanma.org/data/2008/0806/article_3128.htm

你喜欢那个算法,就找那个算法的源码。应该很简单。自己写一个也行,就是估计效率比较差。

热心网友 时间:2024-11-24 04:53

问老师
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 ppr管内有水流不净 如何焊接处理 雪媚娘怎么样不塌? 续保押金怎么退?4S店退续保押金流程 飞流直下三千尺这首诗名叫什么 飞流直下三千尺什么诗 飞流直下三千尺出自哪首诗? 男属牛的婚配,属牛男的婚配最佳属相 男属牛最佳婚配属相,男属牛和什么属相合适 属牛男最佳婚配是什么,属牛男的和什么属相女最配 属牛的婚姻最佳搭配 属牛男最佳婚配 绑定了QQ号,要如何解绑? 被誉为钢琴之王的作曲家是谁 ...李斯特,舒伯特都是维也那的音乐家吗,是同一时期的人吗… 吃了头疼的美国黄金玛卡是不是假的 痰是如何产生的? 今天买了两盒金百岁玛卡神奇丸,不知道是否正品,有什么鉴别方法?_百度... 梦到男友的几条内裤都坏了口子 梦到自己洗内裤划破了没洗干净 要想测量出一个蚊帐网眼的面积可以采用什么的办法? 乌龙茶有哪些作用功效 乌龙茶有什么作用功效 请问如何在多个文本文件中查找一个字符串 用批处理怎样实现从文本中查找字符串 通液后用大盐热敷小肚子关觉得肚子里一动一动的还放屁是怎么回事_百 ... 梦见一个人在黑漆漆的房子里大声喊叫 梦见有个疯子在对面小路上大声喊叫,楼顶上的矮墙一小段突然向外倒下... 手机电池相当于多少瓦的节能灯电池 空心字:海阔天空的写法 只有一个女儿我要绝后了吗?老了该怎么办? 我的手机是华为c8813,他自带了光感解锁请问怎么关闭 ...文件中标题加“茶色背景2,深色10%”底纹,应用范围为文字,如何操作... word中设置标题段底纹。 请问是设置段落还是文字?? 锔瓷用的金刚钻工具是自己制作的吗?怎么找或者怎么做啊 醉春池锔瓷 你好! 如来佛祖是在什么树下成佛的? 福州 哪里批发蚊帐 佛陀在什么树下 圆寂 过去七佛降生,成道,涅槃各在什么树下? 我要买蚊帐 我想买蚊帐,请大家帮我介绍一个好的品牌,外观要好看一点的,谢谢。_百 ... ...但我要一个从床的宽度方向开口的蚊帐,不知道哪有