编程珠玑第15章字符串stl set和map容器排序字符串
2012-04-19 13:31
113 查看
15.1单词
1:生成包含单词的列表,利用c++标准库提供的sets和strings
从文件中分析出单词,并排序输出
需要按序输出并统计词频,利用map容器
参考http://ofey.me/2010/11/c%E4%BB%A5%E5%8D%95%E8%AF%8D%E4%B8%BA%E5%8D%95%E4%BD%8D%E8%AF%BB%E5%8F%96%E6%96%87%E6%9C%AC/
http://topic.csdn.net/u/20080928/13/2ac392f7-df0e-4092-8350-1af408811ab7.html string转char*
/article/4798553.htmlC++文件操作
1:生成包含单词的列表,利用c++标准库提供的sets和strings
从文件中分析出单词,并排序输出
#include <iostream> #include <fstream> #include <string> #include <set> using namespace std; void TokenWordFromTxt(set<string> &S,ifstream &in) { char *pch; char *psrc = NULL; for (string str; getline(in,str);)//一行一行的读取换行符号"\n"结束 { cout<<str<<"\n"; psrc = const_cast<char *>(str.c_str()) ;//利用string::c_str将string 转换成char*,又由于其是const的strtok不接受const,取出常量性 pch = strtok(psrc,",.: "); while(pch != NULL) { //printf ("---%s\n",pch); string t = pch; S.insert(t); pch = strtok(NULL,",.: \"");//c库提供的分词函数 } } } void PrintSet(set<string> &S) { set<string>::iterator iter; int i=0; for (iter = S.begin();iter!=S.end();++iter) { i++; cout<<"--"<<i<<":"<<*iter<<endl; } } int main() { ifstream in("D:\\word.txt");//读取文件 set<string> S;//利用set,stl提供的set TokenWordFromTxt(S,in); PrintSet(S); system("pause"); return 0; }
需要按序输出并统计词频,利用map容器
#include <iostream> #include <fstream> #include <string> #include <map> using namespace std; void TokenWordFromTxt(map<string,int> &M,ifstream &in) { char *pch; char *psrc = NULL; for (string str; getline(in,str);)//一行一行的读取换行符号"\n"结束 { cout<<str<<"\n"; psrc = const_cast<char *>(str.c_str()) ;//利用string::c_str将string 转换成char*,又由于其是const的strtok不接受const,取出常量性 pch = strtok(psrc,",.: "); while(pch != NULL) { //printf ("---%s\n",pch); string t = pch; M[t]++; pch = strtok(NULL,",.: \"");//c库提供的分词函数 } } } void PrintSet(map<string,int> &M) { map<string,int>::iterator iter; int i=0; for (iter = M.begin();iter!=M.end();++iter) { i++; cout<<"--"<<i<<":"<<iter->first<<":"<<iter->second<<endl; } } int main() { ifstream in("D:\\word.txt");//读取文件 map<string,int> M;//利用set TokenWordFromTxt(M,in); PrintSet(M); system("pause"); return 0; }
参考http://ofey.me/2010/11/c%E4%BB%A5%E5%8D%95%E8%AF%8D%E4%B8%BA%E5%8D%95%E4%BD%8D%E8%AF%BB%E5%8F%96%E6%96%87%E6%9C%AC/
http://topic.csdn.net/u/20080928/13/2ac392f7-df0e-4092-8350-1af408811ab7.html string转char*
/article/4798553.htmlC++文件操作
相关文章推荐
- 编程珠玑-第二章(字符串旋转与排序)
- 涉及_map排序_随机字符串
- C++学习笔记(字符串string、vector_deque、queue,multiset、map、multimap、容器拷贝问题)
- map容器在解决字符串问题的方便之处
- C++学习笔记(字符串string、vector_deque、queue,multiset、map、multimap、容器拷贝问题)(复制粘贴,方便后面翻阅)
- stl std::map容器排序及使用注意事项
- 关联容器Map(键值对),输入一串字符串,循环输出字符串中每个字符已经个数
- Java中容器[Collection(List,Set,Queue),Map],迭代器(Iterator)和比较器(Comparator)及列表排序
- Map按key进行排序 And Map拼接字符串
- HDU5688 Problem D【字符串排序+MAP】
- 部分排序(《编程珠玑(续)》第15章)
- map根据值排序,字典排序,读入带空格的字符串处理
- [置顶] Fastjson 序列化,反序列化Map对象排序问题(字符串转map,map转字符串)
- 利用map容器中统计文件中相同字符串的个数
- C++ map容器 按照value值排序
- 使用vector list等容器对字符串的排序
- 经典map集合问题,黑马作业题,1.利用键盘录入,输入一个字符串,.统计该字符串中各个字符的数量(提示:字符不用排序)
- 关联容器map按照value排序或者按照key排序
- map关联容器问题,内部数据按照键值的大小排序,无论插入数据的顺序!
- 删除容器中重复字符串并按长度排序…