从一个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文件时打开失败。有空还要研究一下怎么打开其他文件。
*/

 

8.9 编写函数打开文件用于输入,将文件内容读入 string 类型的 vector 容器,每一行存储为该容器对象 的一个元素。8.10 重写上面的程序,把文件中的每个单词存储为 容器的一个元素

8.9 编写函数打开文件用于输入,将文件内容读入 string 类型的 vector 容器,每一行存储为该容器对象 的一个元素。8.10 重写上面的程序,把文件中的每个单词存储为 容器的一个元素...
  • qq_25235869
  • qq_25235869
  • 2016-03-04 13:11:40
  • 421

如何取出文本中的单词(实例)

//1.bug1 : 如果最后一个单词后面直接跟\0.无法获取.     //2.bug2 : 第一个单词前面出现空格,或者多个空格     //3.bug3 : 单词与单词之间出现多个空格. ...
  • a787188834
  • a787188834
  • 2014-07-29 23:05:58
  • 476

提取单词

//**************************************************************************************************...
  • zhangyongliang0
  • zhangyongliang0
  • 2013-09-06 16:32:26
  • 507

C++读取一文本文件并进行单词统计结果

  • 2010年08月10日 21:39
  • 642KB
  • 下载

Java 读取一段英文文档统计每个单词出现的次数和单词的总数

Java 读取当前目录下一段英文文档统计每个单词出现的次数和单词的总数 英文文档名字为 english.txt代码如下import java.util.*; import java.util.reg...
  • hughdove
  • hughdove
  • 2011-07-21 05:31:16
  • 11670

提取英文中的单词

用正则表达式很简单String s="this is a test,   powerful split";String[] arr=s.split("[^a-zA-Z]+"); //6个单词的数组fo...
  • treeroot
  • treeroot
  • 2004-11-11 08:58:00
  • 1888

从英文小说文件提取每一个单词的程序代码

//============================================================================== // Filename : ...
  • liudglink
  • liudglink
  • 2014-10-23 23:08:15
  • 655

java实现读取一篇英文文章,统计其中每个单词出现的次数并排序输出

package com.test.string; import java.io.BufferedReader; import java.io.BufferedWriter; import java....
  • hinatarx
  • hinatarx
  • 2014-10-30 16:25:54
  • 1163

Python 练习册 6-统计文本文件中的出现最多的单词

Python 练习册,每天一个小程序,原题来自Yixiaohan/show-me-the-code 我的代码仓库在Github 目标你有一个目录,放了你一个月的日记,都是 txt,为了避免分词的...
  • abc609691039
  • abc609691039
  • 2016-04-20 22:55:29
  • 786

提取字符串中的单词

c/c++语言中如何提取出字符串中的单词?使用c标准库 ‘string.h’ 中的 ‘strtok’ 函数,函数原型如下:函数原型: char * strtok(char * _string, cha...
  • qq_27925619
  • qq_27925619
  • 2017-08-14 20:04:10
  • 717
收藏助手
不良信息举报
您举报文章:从一个txt文件中读取文章并删除特定单词并显示文章
举报原因:
原因补充:

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