IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++ stl 经典题目 -> 正文阅读

[C++知识库]C++ stl 经典题目

练习3.1
写一个读取文本文件的程序,将文件中的每个单字存人map。map的key便是刚才所说的单字,map的value则是该单字在文本文件中的出现次数。再定义一份由“排除字眼”组成的有如a、an、or、the、 and和but之类的单字。将某单字放人map之前,先确定该单字并不在“排除字集”中。一旦文本文件读取完毕,请显示一份单字清单,并显示各单字的出现次数。你甚至可以再加以扩展,在显示单字之前,允许用户查询某个单字是否出现于文本文件中。
扩展已实现:
代码如下:

#include <map>
#include <set>
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
void initialize_exclusion_set( set<string>& );
void process_file( map<string,int>&, const set<string>&, ifstream& );
void user_query( const map<string,int>& );
void display_word_count( const map<string,int>&, ofstream& );


int main()
{
    ifstream ifile( "C:\\Users\\liukun\\Desktop\\old.txt" );
    ofstream ofile( "C:\\Users\\liukun\\Desktop\\new.txt" );
    if ( ! ifile || ! ofile )
    {
        cerr << "Unable to open file -- bailing out!\n";
        return -1;
    }
    set<string> exclude_set;
    initialize_exclusion_set( exclude_set );
    map<string,int> word_count;
    process_file( word_count, exclude_set, ifile );
    user_query( word_count );
    display_word_count( word_count, ofile );

}

void initialize_exclusion_set( set<string> &exs )
{
    static string _excluded_words[25] =
    {
        "the","and","but","that","then","are","been",
        "can","a","could","did","for", "of",
        "had","have","him","his","her","its","is",
        "were","which","when","with","would"
    };
    exs.insert( _excluded_words, _excluded_words+25 );
}

void process_file( map<string,int> &word_count,
                   const set<string> &exclude_set, ifstream &ifile )
{
    string word;
    while ( ifile >> word )
    {
        if ( exclude_set.count( word ))
            continue;
        word_count[ word ]++;
    }
}

void user_query( const map<string,int> &word_map )
{
    string search_word;
    cout << "Please enter a word to search: q to quit";
    cin >> search_word;
    while ( search_word.size() && search_word != "q" )
    {
        map<string,int>::const_iterator it;
        if (( it = word_map.find( search_word ))
                != word_map.end() )
            cout << "Found! " << it->first
                 << " occurs " << it->second
                 << " times.\n";
        else
            cout << search_word
                 << " was not found in text.\n";
        cout << "\nAnother search? (q to quit) ";
        cin >> search_word;
    }
}

void display_word_count( const map<string,int> &word_map, ofstream &os )
{
    map<string,int>::const_iterator
    iter = word_map.begin(),
    end_it = word_map.end();
    while ( iter != end_it )
    {
        os << iter->first << " ( "
           << iter->second << " )" << endl;
        ++iter;
    }
    os << endl;
}

记住要先创建好文件!(new.txt可以不用),old.txt文件里面不填任何东西都没事,当然这里面写点东西才更贴近题目本意。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-29 08:54:26  更:2021-08-29 08:55:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:35:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码