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

求一段C++小程序

发布网友 发布时间:2023-07-07 20:54

我来回答

4个回答

热心网友 时间:2024-11-17 16:34

while(getline(inf, strLine))
{
if(strLine.size() > 0)
strContent += strLine;
} 中strContent += strLine;是什么意思?谢谢!

strLine是html文档中的每一行,这句的意思是每读取一行就把它加入到strContent中,遇到空行不加入,这样可以不遗漏因转行而本分开的关键字。

我改了下,从书上抄了个case-insensitive的字符串traits,这样查找关键字就不分大小写了,有点理解你的意思了,你的意思是把多个html页面代码放在一个文本中,然后先在第1个页面的标题里找,找到的话count++,如果第1个页面的网页部分也有的话count就不增加,也就是说在同一个网页段(header 加 body)里如果关键字出现就只算一次是不是?

#pragma warning (disable: 4996) // 太多警告看着厌烦无视之
#include <iostream>
#include <fstream>
#include <string>
#include <cstddef>
#include <cstring>
#include <utility>
#include <map>
using namespace std;

struct ci_char_traits : public char_traits<char>
{
static bool eq(char c1, char c2)
{
return toupper(c1) == toupper(c2);
}
static bool lt(char c1, char c2)
{
return toupper(c1) < toupper(c2);
}
static int compare(const char* s1, const char* s2, size_t n)
{
return memicmp( s1, s2, n );
}
static const char* find(const char* s, int n, char a)
{
while( n-- > 0 && toupper(*s) != toupper(a) )
{
++s;
}
return n >= 0 ? s : 0;
}
};
typedef basic_string<char, ci_char_traits> ci_string;

istream& getline(istream& is, ci_string& cistr)
{
string temp;
getline(is, temp);
cistr = temp.c_str();
return is;
}

ostream& operator << (ostream& os, const ci_string& cistr)
{
os << cistr.c_str();
return os;
}

typedef const char* PCSTR;

bool SearchDetail(const ci_string& src, const ci_string& key)
{
//size_t uiCount = 0;
//size_t uiPrevPos = 0;
//size_t szLength = key.size();
//while((uiPrevPos = src.find(key, uiPrevPos)) != ci_string::npos)
//{
// ++uiCount;
// uiPrevPos += szLength;
//}
//return uiCount;
return src.find(key) != string::npos;
}

size_t KeyWordSearch(PCSTR szFileName, PCSTR szKeyWord)
{
ifstream inf(szFileName);

if(!inf)
{
cout << "File: " << szFileName << " not exist!\n";
return 0;
}

ci_string strContent;
ci_string strLine;
while(getline(inf, strLine))
{
if(strLine.size() > 0)
strContent += strLine;
}

size_t iHeadBeg;
size_t iCount = 0;
while((iHeadBeg = strContent.find("<H")) != string::npos)
{
size_t iHeadEnd = strContent.find("</H");
iHeadEnd = strContent.find(">", iHeadEnd) + 1;

// 把Header提取出来, 从总篇幅中删除
ci_string strHeader(strContent.begin() + iHeadBeg, strContent.begin() + iHeadEnd);
strContent.erase(strContent.begin() + iHeadBeg, strContent.begin() + iHeadEnd);

// size_t iCountHeader = SearchDetail(strHeader, ci_string(szKeyWord));

// 看是否存在
bool bInHeader = SearchDetail(strHeader, ci_string(szKeyWord));

// 定位Body
size_t iNextHeader = strContent.find("<H");
if(iNextHeader == string::npos)
iNextHeader = strContent.size();

// 把Body提取出来, 从总篇幅中删除
ci_string strBody(strContent.begin(), strContent.begin() + iNextHeader);
strContent.erase(strContent.begin(), strContent.begin() + iNextHeader);

// size_t iCountBody = SearchDetail(strBody, ci_string(szKeyWord));

// 看是否存在
bool bInBody = SearchDetail(strBody, ci_string(szKeyWord));

iCount += (bInHeader || bInBody);
}

return iCount;
}

int main()
{
cout << "Enter a file's name (include complete directory):\n";
ci_string strFileName;
getline(cin, strFileName);

cout << "Enter the keyword you want to search for:\n";
ci_string strKeyWord;
getline(cin, strKeyWord);

size_t iResult(KeyWordSearch(strFileName.c_str(), strKeyWord.c_str()));

cout << "The times of occurrence of keyword \"" << strKeyWord << "\" is: ";
cout << iResult << endl;
}

热心网友 时间:2024-11-17 16:34

以前做过类似的题,不过当时是简单处理,忽略<>中间的内容

热心网友 时间:2024-11-17 16:35

bust
破产的;一文不名的
be clean [dead] bust(穷得)一文不名
you are bust-you are bust
你破产了

sorry to trouble you
抱歉麻烦你

热心网友 时间:2024-11-17 16:36

正学着html语言呢,。。。。。。。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 楼梯的水泥台阶上可以铺地板革吗 手机腾讯会议共享屏幕播放视频没声 腾讯会议共享屏幕没声音怎么办 鬼泣3 第10关 微信会自动限制7天社交功能吗 夹腿综合征配合中医治疗可以不? 听说CCE素博会准备开展了?需要提前购票吗? 有没有什么发热器,不是暖炉那样子的,小孩子触碰打翻了也没有危险,便宜... 求言情小说推荐:要男主早就爱上女主,一直在等女主长大的小说。_百度... 法航一航班起飞突发状况折返 ...机场)af0112 号航班起飞-降落时间 转机MU292到西安时间 我是个专职司机,今天开车路开错了,我觉得 领导很不开心,我该怎么办? 我是公司老板专职司机,因为才相处一个月。老板觉得我们融洽不合适,怎 ... 作为领导的专职司机,领导不喜欢我怎么办? 帅可以泡很多女孩子吗 ...的25岁男生,谈过13个女朋友啊,怎么会有这么多女人喜欢他呀 我的男人太帅了,帅的招引许多女人,该怎么办? 长的比较帅的25岁男生,为什么谈了有10个女朋友啊!长的比较帅的人... 男人长得帅,女朋友就多吗? 很帅的男人都会有很多个女人吗? 长的帅的男生,上的女人会多嘛? 我的同事很讨厌是个超级马屁精,我看到她就很讨厌,她还一直跟我说话,这... 我周围有个爱拍马屁的同学,有点厌恶,你说我该怎么办? 65000瓦等于多少千瓦 六年级英语作文:我会唱歌 找一本系统小说,系统的名叫天罚系统,主角名字是任禾,主角干的第一次事... 茶有茶性,人有人性 我爸爸和我妈妈为了一点小事而吵架闹分家,该怎么劝说 父母吵架闹分家作为十几岁的孩子应该怎么办? 明明欧洲的国家都很小,为什么还要闹分家? 和你家人闹分家该如何处理? 分家遭小叔无理取闹怎么办? 早些年农村结了婚就闹分家,现在为何几乎看不到? 企业被删除了怎么添加? 宝宝1岁11个月能力发展 让宝宝过早蹦跳危害大, 快来收藏1岁以内宝宝的运动发育规律 1岁9月孩子得腮腺炎 能蹦跳吗 宝宝1岁前的早期教育 杨树多钱一吨?是不是又涨了 现在杨树多钱一立方 篮球dj音效设备有哪些 问下低音炮音响买2.0的好?还是2.1的。听dj的 天天爱消除金币钻石怎么得有什么用