从一个txt文件中读取文章并删除特定单词并显示文章

原创 2007年10月10日 17:04:00

/*本程序练习从一个文本文件中逐单词读出字符串,并将它们保存在一个vector<string>中,最终删除其中的
and,the,a,if ,or,but等无意义的单词,最后显示出来。
*/
#include<string>
#include<iostream>
#include<vector>
#include <fstream>
#include<algorithm>
//本来有N多错误的,加上这个fstram的头文件就好了,fstream包含iostream.以后可以用#include <fstream>来代替#include<iostream>哈
using namespace std;

//本函数从文件中读出数据,并写入到string vector中,返回 string vector
vector<string>* readandstore()
{
 string file_name,text_words;
 int count_words=0;
 cout<<"请输入要读出的文件名"<<endl;
 cin>>file_name;
 ifstream infile(file_name.c_str ());
 
 
 if(!infile)
 {
  cerr<<"打开指定文件失败"<<endl;
  exit(-1);
 }
 vector<string>* myvector=new vector<string>;//动态建立一个string vector,避免空悬指针
 while(infile>>text_words)
 {
  myvector->push_back (text_words);
  count_words++;
 }
 cout<<"共有"<<count_words<<"个单词"<<endl;
 infile.close ();
 return myvector;
}
//本函数输出  string vector中的单词
void print(vector<string> *p)
{
 vector<string>::iterator begin_iter=p->begin ();
 for(;begin_iter!=p->end ();begin_iter++)
 {
  cout<<*begin_iter<<"/t";
 }

}

//本函数从string vector 中删除一些没有意义的单词
void deletewords(vector<string> *p)
{
 string sc[]={"and","the","a","if","or","but"};
 int numbers=0;
 vector<string>remove_words(sc,sc+6);
 for(vector<string>::iterator iter=remove_words.begin ();iter!=remove_words.end ();iter++)
 {
  numbers=count(p->begin (),p->end (),*iter);
  // 泛型算法count的使用,统计有多少个与*iter相等的单词
  vector<string>::iterator flag;
  flag=remove(p->begin (),p->end (),*iter);
  p->erase (flag,p->end ());
  cout<<"/n有"<<numbers<<"个"<<*iter<<"被删除:"<<endl;
 }

}

void main()
{
 vector<string> *p;
 p=readandstore();
 cout<<"删除以前文件内容为:"<<endl;
 print(p);
 deletewords(p);
 cout<<"删除以后文件内容为:"<<endl;
 print(p);
 cout<<endl;
 cout<<"删除后还有"<<p->size ()<<"个单词"<<endl;
}

/*总结:
(1)练习了对文件的输出用ifstream infile(文件名),在对文件读取的时候,string text_words;
     infile>>text_words,就可将读取的单词保存到text_words了。
(2)其次练习了使用泛型算法count,remove,erase等。
(3)练习了对容器vector的使用,和对迭代器iterator的使用.
(4)明白了输入文件名的时候,必须是全路径,如:d:/ttbc.txt
(5)在读取单词的时候,首先用的是getline(getline(infile,text_words,'/t'),后面发现getline
     是一次读取一行,不能对单个单词操作,即使我后面第三个参数用的是/t.
(6)让我注意到打开文件要用close来关闭。
(7)打开的文件仅局限与txt文件,打开doc和rm文件时打开失败。有空还要研究一下怎么打开其他文件。
*/

 

c语言统计从文件读取的文章中所有单词的出现次数

#include #include #include #define MAXLEN 100 typedef struct TreeNode { int count; char...
  • hanshuilingyue
  • hanshuilingyue
  • 2014年02月14日 17:32
  • 1433

11.12 acm培训题Problem F: 查找单词

Description 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。 现在,请你编程实现这一功能,具体要求是:给定一...
  • zhengyuan233
  • zhengyuan233
  • 2016年11月14日 17:22
  • 734

写一个程序,分析一个文本文件(英文文章)中各个单词出现的频率,并且把频率最高的10词打印出来

写一个程序,分析一个文本文件(英文文章)中各个单词出现的频率,并且把频率最高的10词打印出来   在看到这个问题的时候,我决定用c语言来进行编写,并且将这个问题进行了分解. ...
  • u011680118
  • u011680118
  • 2015年04月03日 09:46
  • 1431

统计单词个数

问题描述   一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。   现在,请你编程实现这一功能,具体要求是:给定一个单词,请...
  • liangguojunainia
  • liangguojunainia
  • 2014年04月01日 21:44
  • 951

从文章中统计不同单词出现的次数

public class ReadEnglishText { public static void main(String[] args) throws Exception { FileInpu...
  • hx_wang007
  • hx_wang007
  • 2017年03月12日 22:32
  • 231

C++中文件读取处理(按行或者单词)

前段时间参加蓝桥杯,遇到一些题目,题目本身不难,按照常规思路写代码即可,但是我忘了如何读取文件了。。。面对一堆数据楞是写不出。还有几天是蓝桥杯的决赛,所以为了避免踩同样的坑,我打算通过实例复习下文件读...
  • xy913741894
  • xy913741894
  • 2017年05月22日 17:46
  • 689

Java去除文件中重复的单词

在学习专业英语的时候,喜欢使用world记录单词对应的中文翻译, 如下图: 但是发现会存在重复的单词,于是便想到使用Java中的Map集合的特性完成单词去重的任务。 主要步骤:1.使用Sca...
  • lym152898
  • lym152898
  • 2017年03月27日 10:56
  • 923

统计分析文章中英文单词出现次数及频率(C++实现)

设计思路: 1.为了统计数据具有实际意义: 统计中需要剔除一些无统计意义的词,例如 am is are 等虚词、代词、连词等。 一般的文章句首单词首字母为大写,此时需要将此类情况的大写字母转化为...
  • wise_x_y
  • wise_x_y
  • 2014年09月28日 13:05
  • 4123

C#统计文章中单词的重复次数,并且按照次数从高到低排序返回(无法处理中文)

/* 功能: C#统计文章中单词的重复次数,并且按照次数从高到低排序返回(无法处理中文) 例子: i am a big boy,how a bout boy? 返回boy...
  • jianghuihong2012
  • jianghuihong2012
  • 2014年02月25日 15:40
  • 1502

Java面试题,读取一篇英文文章,输出其中出现单词的次数最多的5个

废话不多说,直接上代码:
  • zhb123GGGGGG
  • zhb123GGGGGG
  • 2014年11月10日 22:02
  • 556
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:从一个txt文件中读取文章并删除特定单词并显示文章
举报原因:
原因补充:

(最多只允许输入30个字)