C++ Primer笔记 从txt文件中查找某一个单词出现的次数/行号/该行自从出现位置的内容

p379

这里有个bug:需求是找出现的次数,当某行出现次数多于一次时,这个程序得到的就是一共出现在了多少行,

下面的运行结果为5次,实际element出现多过5次,只是出现在5行而已,所以这是个bug!


#pragma warning(disable: 4786)

#pragma warning(disable: 4503)

#include <iostream>

#include <fstream>

#include <sstream>

#include <string>

#include <map>

#include <vector>

using namespace std;

 

//用来显示查找的该单词所在行的部分内容

void Show(vector<string>::const_iterator beg, vector<string>::const_iterator end)

{

    while (beg != end)

    {

        cout<<*beg++<<"  ";

    }

}

 

int main()

    ifstream infile("1.txt", ios::in); 

    if (!infile)

    {

        cerr<<"open file error!"<<endl;

        exit(1);

    }

    string str;

    unsigned int line = 0;                   //记录行号

    string strFind("element");              //待查单词

    map< unsigned int, vector<string> > element; //保存待查元素行号,每行部分内容

    bool enter = false;                      //当某一行出现了待查元素后开始记录该行内容

 

    while(getline(infile, str))                 //读入一行至str

    {

        enter = false;

        ++ line;

        istringstream stream(str);     //用来从独到的一行内容中逐个取出单词

        string word;                          //记录每行中的单独的每个单词

        vector<string> sentence;    //保存出现待查元素后该行的内容

        while (stream >> word)     //取出每行中每个单词

        {

            if (strFind == word)  //是否为待查单词

            {

                enter = true;

            }

            if (true == enter)  //开始记录待查单词所在行的内容

            {

                sentence.push_back(word);

            }

        }

        if (true == enter)

        {

            element.insert(make_pair(line, sentence));  //把行号和内容保存起来

        }

    }

 

    cout<<strFind<<"总共出现"<<element.size()<<"次!"<<endl;

 

    for (map< unsigned int, vector<string> >::const_iterator iter = element.begin(); iter != element.end(); iter ++)

    {

        cout<<"第"<<iter->first<<"行: ";

        Show((iter->second).begin(), (iter->second).end());

        cout<<endl;

    } 

 

    cout<<endl;

    return 0;

}


1.txt和运行结果

C++ Primer笔记   从txt文件中查找某一个单词出现的次数/行号/该行自从出现位置的内容 - 大灰狼 - 大灰狼 的博客


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值