C++文件中读单词并统计输出改单词及其个数
2015-09-26 11:08
471 查看
(一)若每个单词之间只有空格或换行符,不含其它的标点符号,则可以直接读单词
(二)若每个单词之间是其它的标点符号(如,或.)则可以按照以下方法读每个单词.
#include<iostream> #include<fstream> #include<assert.h> #include<string.h> #include<map> using namespace std; int main() { ifstream in("D:\\test.txt"); assert(in!=NULL); map<string,int>mvc; string word; while(in>>word) mvc[word]++; map<string,int>::const_iterator beg=mvc.begin(); for(;beg!=mvc.end();beg++) cout<<beg->first<<":"<<beg->second<<endl; return 0; }
(二)若每个单词之间是其它的标点符号(如,或.)则可以按照以下方法读每个单词.
#include<iostream> #include<fstream> #include<assert.h> #include<string> #include<map> using namespace std; int main() { ifstream in("D:\\111.txt"); assert(in!=NULL); map<string,int>mvc; string word; int i=0; char str[200],ch; //ch=in.get(); while((ch=in.get())!=EOF) { if(ch==','||ch=='.'||ch==' ') { str[i]='\0'; word=str; mvc[word]++; i=0; } else if(ch=='\n')//不加该判断就会出现“”字符串。 { continue; } else { str[i++]=ch; } } map<string,int>::const_iterator beg=mvc.begin(); for(; beg!=mvc.end(); beg++) cout<<beg->first<<":"<<beg->second<<endl; system("pause"); return 0; }当然你也可以根据方法(一)中方法,读取每个单词时除掉后面的标点符号!!!
相关文章推荐
- C++ string类型的split字符串分割函数
- C++ Primer Plus第六版 第十一章 编程练习答案
- C++的几种强制类型转换
- C++ 虚函数表解析
- C/C++笔试准备(1)
- C语言中 .h文件和.c文件的区别
- C语言复习day2
- c的free和c++的delete的区别
- C语言里面 sizeof 的使用
- c/c++程序调试
- C++中的头文件和源文件
- C语言复习day1
- 技术面试(C++)
- C++学习篇——构造函数与析构函数
- C++ 的构造/析构/赋值/拷贝函数比较
- C++拷贝构造函数详解
- eclipse 配置c++开发环境
- C++ | STL 概述
- C++ | 段错误
- c++设计模式----迭代器模式iterator